【问题标题】:Custom admin form not showing extra fields自定义管理表单不显示额外字段
【发布时间】:2016-02-13 16:48:21
【问题描述】:

我有一个自定义用户模型:

class User(AbstractUser):

    # First Name and Last Name do not cover name patterns
    # around the globe.
    name = models.CharField(_("Name of User"), blank=True, max_length=255)

    # Customer account
    customer_account = models.ForeignKey(CustomerAccount, null=True, blank=True)

    def __str__(self):
        return self.username

    def get_absolute_url(self):
        return reverse('users:detail', kwargs={'username': self.username})

我的 admin.py 是:

class MyUserChangeForm(UserChangeForm):
    class Meta(UserChangeForm.Meta):
        model = User


@admin.register(User)
class UserAdmin(AuthUserAdmin):
    form = MyUserChangeForm
    add_fieldsets = (
            ('Customer account', {'fields': ('customer_account',)}),
    )
    add_form = MyUserCreationForm

但在我的管理站点中,我没有看到任何新字段,没有“名称”,没有“客户帐户”。

【问题讨论】:

    标签: django django-admin django-users


    【解决方案1】:

    问题解决了。

    线路有问题:

    add_fieldsets = (
                ('Customer accounts', {'fields': ('customer_account','default_customer_account')}),
        )
    

    我改成这个就OK了:

    fieldsets = AuthUserAdmin.fieldsets + (
                ('Customer accounts', {'fields': ('customer_account','default_customer_account')}),
        )
    

    如果有人知道我的“add_fieldsets”为什么不起作用,我会学到一些东西,但其他解决方案对我来说没问题。

    【讨论】:

    • add_fieldsets 在这种情况下不起作用,因为 add_fieldsets 用于 UserCreationForm,而不是 UserChangeForm。 (即在本例中添加 = 创建)。因此,如果您想在用户创建中添加字段,请使用 add_fieldsets。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多