如何在自定义管理列表显示中显示Django auth用户字段

时间:2016-08-02 20:09:58

标签: python django

我正在使用Django auth用户模型以及自定义用户配置文件模型。用户配置文件管理员如下所示:

class UserProfileAdmin(admin.ModelAdmin):
    list_display = ['user', 'first_login', 'project', 'type']
    class Meta:
        model = UserProfile

用户个人资料模型如下所示:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    first_login = models.BooleanField(default = True)
    TYPE_CHOICES = (('R', 'Reader'), ('A', 'Author'))
    type = models.CharField(max_length = 9, choices = TYP_CHOICES, blank = True)
    project = models.ForeignKey('Project', on_delete=models.CASCADE)

我想要做的是在UserProfileAdmin的列表显示中显示用户的is_active属性。这是可能的,如果是的话,怎么样?

3 个答案:

答案 0 :(得分:1)

如果您在自定义管理模型中定义了说wrapped_is_active方法,可以使用以下签名:

def wrapped_is_active(self, item):
    if item:
        return item.user.is_active
wrapped_is_active.boolean = True

您应该在list_display中指定该方法,以便它变为:

list_display=['user', 'first_login', 'project', 'type', 'wrapped_is_active']

有关详细信息,请参阅Django admin site documentation

答案 1 :(得分:0)

可能:我在代码中进行了更改看看:

class UserProfileAdmin(admin.ModelAdmin):
    list_display = ['user', 'first_login', 'project', 'type','is_active']
    class Meta:
        model = UserProfile


class UserProfile(models.Model):
    user = models.OneToOneField(User)
    first_login = models.BooleanField(default = True)
    TYPE_CHOICES = (('R', 'Reader'), ('A', 'Author'))
    type = models.CharField(max_length = 9, choices = TYP_CHOICES, blank = True)
    project = models.ForeignKey('Project', on_delete=models.CASCADE)
is_active = models.BooleanField(default=True)

答案 2 :(得分:0)

我知道来晚了!但是我找到了一种更简单的方法:

您可以在模型UserProfile中添加如下功能:

    def is_active(self):
        return self.user.is_active

您可以在list_display中添加:

    list_display = ('user', 'first_login', 'project', 'type', 'is_active')