【问题标题】:is_staff field is not showing in Django adminis_staff 字段未显示在 Django 管理员中
【发布时间】:2019-08-12 22:51:53
【问题描述】:

is_staff 被定义为布尔字段,但其复选框在管理页面中不可见。但 is_admin 是可见的,可以更改。

我无法使用 views.py 对该字段进行更改

class Users(AbstractBaseUser, PermissionsMixin):
    objects = UserManager()
    mobile_no = models.IntegerField(_('MobNumber'), null=True, blank=True,unique=True)
    email = models.EmailField(_('Email'), max_length=75, null=False, blank=False)
    first_name = models.CharField(_('FirstName'), max_length=50, null=True, blank=True)
    last_name = models.CharField(_('LastName'), max_length=70, null=True, blank=True)
    role = models.CharField(_('Role'), max_length=70, null=True, blank=True)
    location = models.CharField(_('Location'), max_length=70, null=True, blank=True)
    date_time = models.DateTimeField(_('DateTime'), auto_now=True, null=True, blank=True)
    activated = models.BooleanField(_('Activated'), default=False)
    is_admin = models.BooleanField(_('is_admin'), default=False)
    is_staff = models.BooleanField(_('is_staff'), default=False)

    def __unicode__(self):
        return str(self.mobile_no)

    def __str__(self):
        return str(self.mobile_no)

    def get_full_name(self):
        return self.first_name + " " + self.last_name

    class Meta:
        ordering = ['-id']

    @property
    def is_staff(self):
        return self.is_admin


    def has_perm(self, perm, obj=None):
        return self.is_admin

    def has_module_perms(self, app_label):
        return self.is_admin

    USERNAME_FIELD = 'mobile_no'
    REQUIRED_FIELDS = ['role']

【问题讨论】:

    标签: django django-models django-views django-admin django-custom-user


    【解决方案1】:

    您可以在 admin.py 中通过导入和继承来编辑用户管理员。这是一个例子:

    # admin.py
    
    from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
    
    class UserAdmin(BaseUserAdmin):
        model = Users
        list_display = ('mobile_no', 'email', 'first_name', 'last_name', 'role', 'location')
        fieldsets = (
            (('Personal info'), {'fields': ('first_name', 'last_name',)}),
            (('Permissions'), {'fields': ('activated', 'is_staff', 'is_superuser', 'groups')}),
            (('Important dates'), {'fields': ('date_time', 'last_login')}),
        )
        class Meta:
            model = User
    
    admin.site.register(User, UserAdmin)
    

    【讨论】:

    • ERRORS: : (admin.E033) 'ordering[0]' 的值是指'username',它不是'CustomAcco 的属性。用户'。 : (admin.E116) 'list_filter[0]' 的值指的是 'is_staff',而不是指一个字段。 : (admin.E116) 'list_filter[2]' 的值是指 'is_active',不是指一个Field。
    • @VA splash - 在管理员删除用户名中,将 is_active 更改为已激活,我不知道为什么它没有选择 is_staff,但您可以暂时删除它,看看它是否有效,并且然后从那里调试。啊,刚刚意识到你的模型被命名为用户而不是用户。见上文......但我只会称你的模型用户。
    • 当我将 is_staff 更改为其他字段名称时,它起作用了。 Django 可能有默认的 is_staff。
    猜你喜欢
    • 2017-05-08
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 1970-01-01
    • 2016-11-19
    • 2021-09-14
    相关资源
    最近更新 更多