2017-11-10 151 views
1

我已使用此擴展的用戶模型:Django管理直列 - 刪除 「對象引用」(空白)

class UserProfile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    biography = models.TextField(max_length=500, blank=True, default='Tell us about you...') 
    tagline = models.CharField(max_length=200, blank=True, default=' ') 

和所附的admin.py:

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    can_delete = False 
    verbose_name_plural = 'User Profile' 
    verbose_name = 'Additional Info' 

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

# Re-register UserAdmin 
admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 

# Register your models here. 
admin.site.register(Product) 

在管理面板,其中正在顯示verbose_name,它顯示Additional Info: UserProfile object - 不確定UserProfile object來自哪裏。使用CSS來隱藏它

enter image description here

有沒有一種方法來去除,其他:我下面所附的截屏?

回答

1

你需要重寫你的模型的__str__方法:

class UserProfile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    biography = models.TextField(max_length=500, blank=True, default='Tell us about you...') 
    tagline = models.CharField(max_length=200, blank=True, default=' ') 

    def __str__(self): 
     return self.user.username 

注意,這將使username你也可以這樣做:

self.first_name 

self.last_name 

編輯

既然你婉它是空白的唯一辦法是返回一個空間,像這樣,

return ' ' #must add a space 

的原因是__str__必須返回一個字符串類型的對象。因此返回類似None''會導致錯誤。

+0

謝謝 - 附加用戶名到verbose_name - 有沒有辦法讓它變成空白? – Steve

+0

我發佈的錯誤請參閱我的編輯。 – scharette

+0

明白了...唷!感謝幫助!那裏需要有價值嗎? – Steve