【问题标题】:Django AbstractUser doesn't show modelDjango AbstractUser 不显示模型
【发布时间】:2017-09-24 21:04:18
【问题描述】:

我是 django 初学者,我想向 AbstractUser 添加一个布尔字段,但它没有在管理员中显示布尔字段。

models.py

class CustomUser(AbstractUser):
    selected = models.BooleanField(default=False)
    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['selected',]

    def __str__(self):
        return self.username

admin.py

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

class UserAdmin(BaseUserAdmin):
    form = MyUserChangeForm
    list_display = ('username', 'first_name', 'last_name', 'email', 'is_staff', 'selected')

admin.site.register(CustomUser, UserAdmin)

settings.py

AUTH_USER_MODEL = 'football_app.CustomUser'

【问题讨论】:

  • 可以加UserAdmin类吗?
  • 如果我列表显示它,它会显示,但我希望每个用户都有它,所以我可以选择或取消选择它
  • 你完成迁移和迁移了吗?
  • 是的,我已经完成了
  • 向您发布 UserChangeForm

标签: django django-admin


【解决方案1】:

在 admin.py 文件更改 class UserAdmin(BaseUserAdmin):转class UserAdmin(CustomUser):

编辑:像这样更新您的课程

class UserAdmin(admin.ModelAdmin):
    list_display = ('username', 'first_name', 'last_name', 'email', 'is_staff', 'selected')

    class Meta:
       model = CustomUser

【讨论】:

  • 它现在显示,但 list_display 不再显示字段和用户更改的整个管理员
  • 难道不能保持用户管理员不变,只需将字段添加到完成并列表显示吗?
  • 如果你想在每个必须选择正确模型类的地方使用selected字段,
  • form = MyUserChangeForm评论此行
【解决方案2】:

您需要先注销当前用户管理员。

admin.site.unregister(User)
admin.site.register(CustomUser, UserAdmin)

【讨论】:

  • 不是这样的:\
  • 不是什么?它实际上来自文档,它不在您的代码中。 docs.djangoproject.com/en/1.11/topics/auth/customizing/…
  • 如果我取消注册它会给我这个 django.contrib.admin.sites.NotRegistered: 模型用户未注册
  • @NitaAlexandru 在这一点上可能有很多原因。只需按照文档。那里有例子。
猜你喜欢
  • 2020-07-31
  • 1970-01-01
  • 1970-01-01
  • 2011-11-25
  • 2014-03-13
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多