【问题标题】:Django admin - users username field shows my email instead of usernameDjango admin - 用户名字段显示我的电子邮件而不是用户名
【发布时间】:2021-06-01 07:40:45
【问题描述】:

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

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

在 admin.py 中我只有:

admin.site.register(User)

有没有人知道为什么在生产中会出现这种情况,而不是在本地?以及如何解决这个问题。

解决方案:

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

【问题讨论】:

  • 你能详细说明本地环境和生产环境之间的 django 设置有哪些不同吗?
  • @RomanMkrtchian 仅在本地 Debug=True 和数据库设置(引擎除外)。几乎一模一样。

标签: python django django-rest-framework django-admin


【解决方案1】:

我认为您已经覆盖了 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

【讨论】:

  • 感谢您的回答。你是对的,我设置了 USERNAME_FIELD = 'email'。但我刚刚从 inocnito 再次检查了生产管理员,一切正常。我猜 Chrome 出于某种原因会自动在用户名字段中设置我自己的电子邮件地址。
猜你喜欢
  • 2021-12-06
  • 2016-08-10
  • 2020-09-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 2010-11-01
  • 2020-09-03
  • 2018-07-14
相关资源
最近更新 更多