2016-08-02 52 views
1

我正在使用Django auth用戶模型以及自定義用戶配置文件模型。用戶配置文件管理是這樣的:如何在自定義管理列表中顯示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) 

我喜歡做的是在該列表顯示中顯示用戶的is_active財產UserProfileAdmin。這是可能的,如果是的話,如何?

回答

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

+0

工作:)但爲什麼查找不起作用,如'user__is_active'? –

+0

我不確定,但是在這種情況下,admin似乎基於'queryset'數據構建了他們的視圖。並檢查屬性,如果是可調用的,則調用它來獲取值。可以用admin的'get_queryset'方法來玩。但絕對應該重複檢查。 –

+0

有一張票[#5863](https://code.djangoproject.com/ticket/5863)允許'list_display'處理像'user__is_active'這樣的外鍵的屬性,但它被關閉爲「不會修復」。 – Alasdair

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) 
相關問題