2016-09-26 55 views
1

我正在爲我的Django項目創建一個新的用戶模型。我很多人都在調用他們的自定義用戶模型XXXUser和自定義用戶管理器XXXUserManager。您是否應該在Django 1.9中重新命名自定義用戶模型?

我想知道是否有這個原因。你可以創建一個自定義用戶,並仍然將其稱爲用戶?這是否會在代碼中產生衝突?

回答

0

基本上你可以。但出於可讀性目的,最好做到這一點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引用您的自定義的一個

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" 

您還可以創建你自己的完全獨立的模型,並與用戶建立一對一的關係

+0

我想我的問題是爲什麼我需要將它重命名爲KarmaUser?我是否可以將它保留爲:class User(AbstractUser):... –

+0

無論是否有這樣做的含義,我都會避免爲自定義用戶模型用戶命名,因爲它可能會讓人們讀代碼庫時感到困惑,真的不想混淆Django的內置命名約定,通過在Builtin之後命名具有不同行爲的內容。它也可能是某些數據庫模式中的保留字(我認爲)....您必須自己嘗試 –

相關問題