2016-09-26 10 views
1

私はDjangoプロジェクトの新しいUserモデルを作成しています。カスタムユーザモデル、XXXUserとカスタムユーザマネージャ、XXXUserManagerを呼び出す人がたくさんいます。Django 1.9でカスタムユーザモデルの名前を変更する必要がありますか?

私には理由があるのだろうかと思っていました。カスタムユーザーを作成して、それをUserと呼ぶことができますか?これはコード内で競合を引き起こしますか?あなたは次のような何かを行うことができ

答えて

0

基本的にすることができます。しかし、読みやすさのためにXxxUserをお勧めします。XxxUserが表示されている場合は、これがカスタムであることが即座に分かります。また、基本的な使用法に共通するコードをいくつか置き換える必要があることに注意する必要があります。

このような

from django.contrib.auth.models import User 

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

であるべき(置き換えなければなりません)そして、あなたはあなたのmodels.pyUserモデルに参照している場合、あなたが

from django.conf import settings 

class SomeModel(models.Model): 
    field = models.RetationField(settings.AUTH_USER_MODEL) 
に必要として

また、を設定することを忘れないでくださいあなたのカスタムワンを参照してください

0

カスタム・ユーザー・モデルをしたい場合は、マニュアルにAbstractUserまたはAbstractBaseUser詳細のいずれかのサブクラスを見てみるに、ここで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" 

ます。また、作成することができますあなた自身の完全に別個のモデルを作り、1対1の関係でそれをユーザーにつなぎます。

+0

私はKarmaUserに名前を変更する必要があるのですか?クラスユーザー(AbstractUser):... –

+0

これに影響があるかどうかにかかわらず、カスタムユーザーモデルユーザーの名前を付けないでください。これは、ユーザーがコードベースを読み上げるのを混乱させる可能性があるため、 Djangoの命名規則に組みこまれているのは、別の振る舞いを持つBuiltinの後に何かを命名することで本当に嫌なことです。それはまた、特定のDBスキーマの予約語(私は思う)かもしれません....あなたはそれを試してみる必要があります –

関連する問題