【问题标题】:Django how to turn off warningDjango如何关闭警告
【发布时间】:2015-05-26 23:37:15
【问题描述】:

我有一个特殊的用户模型,有自己的身份验证后端。 Django 关心我并发送通知很好,但是我如何关闭一些警告,如下所示:

WARNINGS:
profile.User: (auth.W004) 'User.email' is named as the 'USERNAME_FIELD', but it is not unique.
    HINT: Ensure that your authentication backend(s) can handle non-unique usernames.

我的用户模型:

class User(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('email address'))
    site = models.ForeignKey(Site, verbose_name=_("Site"), null=True, blank=True)
    class Meta:
        unique_together = (
            ("email", "site", ),
        )

【问题讨论】:

    标签: python django logging warnings messages


    【解决方案1】:

    在查看我自己的项目的设置文档时,我偶然发现了一个让我想起了你的问题的设置。

    从 Django 1.7 开始,有一个设置可以使某些警告静音。如果您使用的是 Django 1.7 或更高版本,您可以将错误代码添加到 SILENCED_SYSTEM_CHECKS 设置:

    # settings.py
    
    SILENCED_SYSTEM_CHECKS = ["auth.W004"]
    

    来源:https://docs.djangoproject.com/en/1.7/ref/settings/#silenced-system-checks

    【讨论】:

      【解决方案2】:

      警告可以帮助您,因此最好改进您的代码以避免它们。

      在这种情况下,您真的不想关闭该警告。如果您阅读警告,您会看到当前可能有两个不同的用户使用相同的用户名!

      要解决这个问题,您应该通过在字段定义中添加 unique=True 来使 email 字段唯一:

      email = models.EmailField(unique=True)
      

      【讨论】:

      • 不,我的模型有 2 个唯一字段:unique_together = ( ("email", "site", ), ) 所以,我无法设置 email = models.EmailField(unique=True)
      • 正如 OP 所说,他希望(电子邮件 + 站点)是唯一的,这意味着电子邮件不能。
      猜你喜欢
      • 2019-02-28
      • 1970-01-01
      • 2010-11-18
      • 2018-08-26
      • 2015-05-19
      • 2011-04-05
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多