首页 > 解决方案 > Django admin - 用户名字段显示我的电子邮件而不是用户名

问题描述

我有一个带有用户名和电子邮件字段的用户模式。我使用postgresql。

对于管理面板中的每个用户,我的电子邮件都会显示在应用程序生产版本 (AWS) 的用户名字段中。本地情况并非如此。在数据库中,用户名显示正确。

在 admin.py 我只是有:

admin.site.register(User)

有谁知道为什么这是生产而不是本地的情况?以及如何解决这个问题。

解决方案:

当我从隐身选项卡检查管理员时,一切正常。Chrome 似乎出于某种原因在“用户名”字段中设置了我的电子邮件地址。

标签: pythondjangodjango-rest-frameworkdjango-admin

解决方案


我认为您已经覆盖了模型USERNAME_FIELD中的属性User。将此字段更改为USERNAME_FIELD = 'random_field'将影响您在类中的字符串方法,User因为在此方法对象中显示USERNAME_FIELD.

您可以覆盖您的__str__方法,因为在管理页面中,对象的默认返回值是此方法的返回值。因此,您可以将此方法添加到您的模型中,如下所示:

class User(SomeParentModel):
    ... some fields ...

    def __str__(self):
        return self.username # Or any other fields that you want

推荐阅读