在Django中更改User的自我显示

时间:2011-05-05 07:34:20

标签: django django-models django-admin

我希望在调用print(user)时看到user.email而不是user.username。这就是说,在我的管理员中,我希望将电子邮件视为外键。

通常我会按照django tutorial

中描述的方式进行操作
class Poll(models.Model):
# ...
def __unicode__(self):
    return self.question

但是,User类是预写的,我不想修改Django。那怎么办呢?

更新: 我在模型中添加了以下内容:

def email(self):
    u = User.object.get(pk=self.user.id)
    return u.email

我如何将它绑定到我的list_display?

2 个答案:

答案 0 :(得分:1)

您可以在Poll类上定义一个名为“get_username”的方法,该方法返回用户的电子邮件地址而不是实际的用户名。然后将'get_username'作为参数传递给Poll类的ModelAdmin中的'list_display'属性。

答案 1 :(得分:0)

您定义的用例需要覆盖User.__unicode__方法。

来自list_display上的django文档:

  

如果该字段是ForeignKey,Django将显示相关对象的__unicode__()

我看不出任何解决方法。