Django如何关闭警告

Django how to turn off warning

我有一个特殊的用户模型,有自己的身份验证后端。 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", ),
        )

警告是为了帮助您,所以大多数情况下最好改进您的代码以避免它们。

在这种情况下,您确实不想关闭该警告。如果您阅读警告,您会发现目前可以有两个不同的用户使用相同的用户名!

要解决此问题,您应该通过将 unique=True 添加到字段定义来使 email 字段唯一:

email = models.EmailField(unique=True)

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

从 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