2017-11-10 176 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