你和你应该重命名 Django 1.9 中的自定义用户模型吗?

Do you and should you rename a custom User model in Django 1.9?

我正在为我的 Django 项目创建一个新的用户模型。许多人称他们的自定义用户模型为 XXXUser 和自定义用户管理器为 XXXUserManager。

我想知道是否有这样的原因。您可以只创建一个自定义用户并仍将其称为 User 吗?这会在代码中造成冲突吗?

如果您想要自定义用户模型,请查看 AbstractUserAbstractBaseUser 的子类,详见此处的文档 https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#extending-django-s-default-user

然后您可以执行以下操作:

from django.contrib.auth.models import AbstractUser
from django.db import models
from django.utils.translation import ugettext_lazy as _

class KarmaUser(AbstractUser): 
    karma = models.PositiveIntegerField(verbose_name=_("karma"), default=0, blank=True)

# Inside project/settings.py
AUTH_USER_MODEL = "profiles.KarmaUser"

您还可以创建自己的完全独立的模型,并通过一对一的关系将其与用户联系起来

基本上可以。但出于可读性目的,最好是 XxxUser,如果您看到 XxxUser,您会立即明白这是自定义的。并且您需要记住,您应该替换一些基本用法常用的代码。

如(应该是替换)

from django.contrib.auth.models import User

应该是

from django.contrib.auth import get_user_model
User = get_user_model()

如果您在 models.py 中引用 User 模型,则需要

from django.conf import settings

class SomeModel(models.Model):
    field = models.RetationField(settings.AUTH_USER_MODEL)

另外不要忘记设置您的 settings.AUTH_USER_MODEL 引用您的自定义