2012-08-13 139 views
12

的model's__unicode__我想顯示Django管理界面模型的用戶名,但不是很知道怎麼做吧..顯示在Django管理

The models.py: 

    class Adult(models.Model):  
     user = models.OneToOneField(User) 
     fullname = models.CharField(max_length=100, 
            blank=True) 
     def __unicode__(self): 
      return self.user.username 

Admin.py: 

    class AdultAdmin(admin.ModelAdmin): 
     list_display = ('??', 'Student_Name',) 
     search_fields = ['??',] 

    admin.site.register(Adult, AdultAdmin) 

我應該往裏走?以上 ?我想顯示unicode或self.user.username?我該怎麼做?需要一些指導...

+0

添加'__unicode__'和'Student_Name'不是模型的一部分;除非你沒有包括它。 – 2012-08-13 06:06:29

回答

29

list_display documentation有四樣東西,你可以添加有:

  1. 一些方法(可調用)接受一個變量,它是實例爲其行正在顯示。
  2. 一個字符串,它是模型類中定義的方法或屬性的名稱。
  3. 一個字符串,它是在ModelAdmin中定義的方法的名稱。

對於您的情況,我們需要#3爲list_display

對於search_fields它更容易,因爲您可以使用後續符號(__)進行查找。

在我們想出這個結尾:

class AdultAdmin(admin.ModelAdmin): 
    list_display = ('__unicode__', 'Student_Name',) 
    search_fields = ['user__username'] 
+0

一個問題:必須同時使用__unicode__和user_username才能生效? – lakesh 2012-08-13 07:55:39

+0

取決於你想要做什麼,因爲一個用於搜索,另一個控制列表視圖中顯示的屬性。 – 2012-08-15 17:47:17

+0

你也可以在--unicode--方法聲明後添加:--unicode - 。short_description ='學生姓名' – madzohan 2015-04-22 14:08:02