我正在爲我的Django項目創建一個新的用戶模型。我很多人都在調用他們的自定義用戶模型XXXUser和自定義用戶管理器XXXUserManager。您是否應該在Django 1.9中重新命名自定義用戶模型?
我想知道是否有這個原因。你可以創建一個自定義用戶,並仍然將其稱爲用戶?這是否會在代碼中產生衝突?
我正在爲我的Django項目創建一個新的用戶模型。我很多人都在調用他們的自定義用戶模型XXXUser和自定義用戶管理器XXXUserManager。您是否應該在Django 1.9中重新命名自定義用戶模型?
我想知道是否有這個原因。你可以創建一個自定義用戶,並仍然將其稱爲用戶?這是否會在代碼中產生衝突?
基本上你可以。但出於可讀性目的,最好做到這一點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
引用您的自定義的一個
如果你想自定義的用戶模型,然後看看子類在這裏https://docs.djangoproject.com/en/1.10/topics/auth/customizing/#extending-django-s-default-user
的文檔中詳細介紹兩種AbstractUser
或AbstractBaseUser
然後,您可以做一些這樣的:
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"
您還可以創建你自己的完全獨立的模型,並與用戶建立一對一的關係
我想我的問題是爲什麼我需要將它重命名爲KarmaUser?我是否可以將它保留爲:class User(AbstractUser):... –
無論是否有這樣做的含義,我都會避免爲自定義用戶模型用戶命名,因爲它可能會讓人們讀代碼庫時感到困惑,真的不想混淆Django的內置命名約定,通過在Builtin之後命名具有不同行爲的內容。它也可能是某些數據庫模式中的保留字(我認爲)....您必須自己嘗試 –