次のようなカスタムプロファイルモデルを作成しました。
from Django.db import models
from Django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.ForeignKey('User', unique=True)
name = models.CharField(max_length=30)
occupation = models.CharField(max_length=50)
city = models.CharField(max_length=30)
province = models.CharField(max_length=50)
sex = models.CharField(max_length=1)
しかし、manage.py syncdb
、私は得る:
myapp.userprofile: 'user'はモデルUserと関係があり、モデルUserはインストールされていないか、抽象的です。
私も試しました:
from Django.contrib.auth.models import BaseUserManager, AbstractUser
ただし、同じエラーが発生します。私が間違っている場所とこれを修正する方法は?
これを変更:
user = models.ForeignKey('User', unique=True)
これに:
user = models.ForeignKey(User, unique=True)
正確にDjango 1.5 AUTH_USER_MODEL
設定 導入されました 。認証システムでカスタムユーザーモデルを使用できます。
Django 1.5〜1.10以降のプロジェクトで動作することを意図したアプリを作成している場合、これはユーザーモデルを参照する適切な方法です(現在はDjango.contrib.auth.models.User
):
class UserProfile(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
Django 1.4もサポートしている再利用可能なアプリを書いている場合、おそらくDjangoバージョン、おそらくこのように:
import Django
from Django.conf import settings
from Django.db import models
def get_user_model_fk_ref():
if Django.VERSION[:2] >= (1, 5):
return settings.AUTH_USER_MODEL
else:
return 'auth.User'
class UserProfile(models.Model):
user = models.ForeignKey(get_user_model_fk_ref())