[django]让后台新增用户的表单包含 email 字段

默认情况下,后台新增用户的表单不包含 email 字段。 每次新增用户后都需求再次修改新增的用户来添加 email 地址。

本文将实现在新增用户的同时将 email 地址也加上,一次完成用户添加,省去一个步骤。

默认情况下:

before

本文将实现:

after

在应用目录下修改/新建 admin.py:

from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin


class MyUserAdmin(UserAdmin):
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'password1', 'password2')
        }),
    )

admin.site.unregister(User)
admin.site ...
more ...

[django]list_display 中包含外键内的字段

本文将实现 list_display 中包含外键内的字段,同样适用于自定义要显示的列。

比如包含 User 中的 email 地址。

image

admin.py:

class HelloAdmin(admin.ModelAdmin):
    list_display = ('user', 'user_email', 'role')
    # ...

    # 显示用户邮箱地址
    def user_email(self, obj):
        return u'%s' % obj.user.email
    user_email.short_description = u'邮箱'

admin.site.register(Hello, HelloAdmin)

参考

more ...

[django]自定义字段在后台显示的名称

默认情况下后台显示的字段名称是依据 models.py 中的字段名来显示的。 下面要做的就是自定义字段在后台的显示名称(比如显示为中文)。

只需在定义字段的时候定义参数 verbose_name 的值即可。

对于普通字段:

name = models.CharField(u'软件名称', max_length=200)

对于 OneToOneField, ForeignKey 及 ManyToManyField :

foo = models.OneToOneField(Foo, verbose_name=u'foobar')

software = models.ForeignKey(SoftWare, verbose_name=u'软件名称')

author = models.ManyToManyField(Author, verbose_name=u'作者')

这样之后,后台就会会显示我们定义的名称。

image

参考

Models | Django documentation | Django

more ...