您是否应该在Django 1.9中重命名自定义用户模型?

时间:2016-09-26 20:06:00

标签: python django django-admin django-1.9

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

我想知道是否有理由这样做。你能创建一个自定义用户,还是称之为用户?这会在代码中产生冲突吗?

2 个答案:

答案 0 :(得分:0)

如果您需要自定义用户模型,请查看此处https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#extending-django-s-default-user

文档中详述的AbstractUserAbstractBaseUser的子类化

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

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"

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

答案 1 :(得分:0)

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

如(应该替换)

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