Django admin inline - 删除“引用的对象”(空白)

时间:2017-11-10 20:17:07

标签: django object admin

我用这个扩展了用户模型:

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的来源。我在下面附上了截图:

enter image description here

有没有办法删除它,其他使用CSS隐藏它?

1 个答案:

答案 0 :(得分: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''之类的内容会导致错误。