在Django管理中显示自定义表单

时间:2019-04-08 03:09:12

标签: django

我创建了一个包含country的自定义用户模型:

models.py

class CustomUser(AbstractUser):
    country = models.CharField(max_length=50, default="None")

然后添加了表单字段为country的{​​{1}}形式的自定义表单,其中显示了所有国家/地区:

forms.py

ChoiceField

然后我将其注册在管理员中:

admin.py

class CustomUserCreationForm(UserCreationForm):
    country = forms.ChoiceField(choices=sorted(COUNTRIES.items()), label="Country")

    class Meta(UserCreationForm):
        model = CustomUser
        fields = '__all__'


class CustomUserChangeForm(UserChangeForm):
    country = forms.ChoiceField(choices=sorted(COUNTRIES.items()), label="Country")
    class Meta(UserChangeForm):
        model = CustomUser
        fields = '__all__'

它已注册,并且一切正常,我可以使用Django Shell和以编程方式保存该模型,但无法在管理控制台中显示它。当我尝试通过管理员创建新用户时,我只看到三个字段-用户名,密码和密码确认。

我是否需要扩展管理模板才能显示此新字段?

1 个答案:

答案 0 :(得分:0)

要执行此操作,您将必须在add_fieldsetsCustomUserAdmin下的admin.py

class CustomUserAdmin(UserAdmin):
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    model = CustomUser
    list_display = ['email', 'username', 'is_staff',]

    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'password1', 'password2', 'country'),
        }),
    )


admin.site.register(CustomUser, CustomUserAdmin)