我正在使用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
属性。这是可能的,如果是的话,怎么样?
答案 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')