2013-10-29 53 views
1

所以我想在auth /用戶頁面上顯示不同的列自定義Django的用戶表視圖與擴展字段

我已經在我的models.py把這個擴展我的用戶模型

class InsiderUser(models.Model): 
    user = models.OneToOneField(User) 
    company_name = models.CharField(max_length=100L, blank=True) 

我能夠通過放置在admin.py下面編輯在管理領域:

class InsiderUserInline(admin.StackedInline): 
    model = InsiderUser 
    can_delete = False 
    verbose_name_plural = 'insideruser' 

# Define a new User admin 
class UserAdmin(UserAdmin): 
    inlines = (InsiderUserInline,) 

但是改變list_display我有一些麻煩,我曾嘗試:

class UserAdmin(UserAdmin): 
    inlines = (InsiderUserInline,) 
    list_display = ('email', 'first_name', 'last_name', InsiderUser) 

這只是告訴我,有一個InsiderUser對象,這讓我覺得我在正確的道路上,因爲下面的所有產生的錯誤:

class UserAdmin(UserAdmin): 
    inlines = (InsiderUserInline,) 
    list_display = ('email', 'first_name', 'last_name', InsiderUser.company_name) 

class UserAdmin(UserAdmin): 
    inlines = (InsiderUserInline,) 
    list_display = ('email', 'first_name', 'last_name', InsiderUser[company_name]) 

回答

3

自公司名稱存儲在一個單獨的表格,您可以使用下面給出的自定義管理方法來顯示它。

class UserAdmin(UserAdmin): 
    inlines = (InsiderUserInline,) 
    list_display = ('email', 'first_name', 'last_name', 'display_company_name',) 

    def display_company_name(self, request): 
     if InsiderUser.objects.filter(user__id = request.id): 
      return InsiderUser.objects.get(user__id = request.id).company_name 
     else: 
      return None 
    display_company_name.short_description = 'Company Name' 

admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 
相關問題