更改Django中用户的自我显示

更改Django中用户的自我显示,django,django-models,django-admin,Django,Django Models,Django Admin,调用print(user)时,我希望看到user.email而不是user.username。这是说,在我的管理,我想看到的电子邮件作为外键 通常情况下,我会按照上所述的方式: 然而,用户类是预先编写的,我不想修改Django。那么我应该如何进行呢 更新: 我在模型中添加了以下内容: def email(self): u = User.object.get(pk=self.user.id) return u.email 现在如何将其绑定到我的列表显示?您定义的用例需要覆盖用户。

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

通常情况下,我会按照上所述的方式:

然而,用户类是预先编写的,我不想修改Django。那么我应该如何进行呢

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

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

现在如何将其绑定到我的列表显示?

您定义的用例需要覆盖
用户。\uuuuuUnicode\uuuu
方法

从django文档中:

如果该字段是外键,Django将显示相关对象的
\uuuuuUnicode\uuuuu()


我看不出有什么办法

您可以在轮询类上定义一个名为“get_username”或其他方法,该方法返回用户的电子邮件地址,而不是其实际用户名。然后将“get\u username”作为参数传递给轮询类的ModelAdmin中的“list\u display”属性。

thanx,我添加了一个代码,您能帮我将其绑定到list\u display吗?为什么需要帮助?只需添加名称。我尝试在admin.py
列表中这样添加显示('id','email')
,但不起作用。我不得不将整个PollAdmin类定义移动到models.py,现在它可以工作了。我不知道这是否是一个坏习惯,但这是我让它工作的唯一方法。你可以将你的函数更改为下面的行“return self.user.email”。然后,只需将函数名添加到列表中即可。当你说以前没用过,你是什么意思?它根本就没有出现吗?如果它没有显示,那么这是一个迹象,你的管理员可能没有被注册?
def email(self):
    u = User.object.get(pk=self.user.id)
    return u.email