私はDjangoプロジェクトの新しいUserモデルを作成しています。カスタムユーザモデル、XXXUserとカスタムユーザマネージャ、XXXUserManagerを呼び出す人がたくさんいます。Django 1.9でカスタムユーザモデルの名前を変更する必要がありますか?
私には理由があるのだろうかと思っていました。カスタムユーザーを作成して、それをUserと呼ぶことができますか?これはコード内で競合を引き起こしますか?あなたは次のような何かを行うことができ
私はDjangoプロジェクトの新しいUserモデルを作成しています。カスタムユーザモデル、XXXUserとカスタムユーザマネージャ、XXXUserManagerを呼び出す人がたくさんいます。Django 1.9でカスタムユーザモデルの名前を変更する必要がありますか?
私には理由があるのだろうかと思っていました。カスタムユーザーを作成して、それをUserと呼ぶことができますか?これはコード内で競合を引き起こしますか?あなたは次のような何かを行うことができ
基本的にすることができます。しかし、読みやすさのために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)
に必要として
また、を設定することを忘れないでくださいあなたのカスタムワンを参照してください
カスタム・ユーザー・モデルをしたい場合は、マニュアルに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の関係でそれをユーザーにつなぎます。
私はKarmaUserに名前を変更する必要があるのですか?クラスユーザー(AbstractUser):... –
これに影響があるかどうかにかかわらず、カスタムユーザーモデルユーザーの名前を付けないでください。これは、ユーザーがコードベースを読み上げるのを混乱させる可能性があるため、 Djangoの命名規則に組みこまれているのは、別の振る舞いを持つBuiltinの後に何かを命名することで本当に嫌なことです。それはまた、特定のDBスキーマの予約語(私は思う)かもしれません....あなたはそれを試してみる必要があります –