2016-12-08 12 views
0

AbstractBaseUserを継承してdjangoユーザーモデルを拡張しようとしているため、プロジェクトの認証プロセスを操作できるようになりました。Djangoユーザーモデルを拡張するときに移行が失敗する

私のモデルは次のようになります。

class AccountManager(BaseUserManager): 
    ... create_user 
    ... create_superuser 


class Account(AbstractBaseUser): 
    email = models.EmailField(unique=True) 
    username = models.CharField(max_length=40, unique=True) 

    objects = AccountManager() 

    USERNAME_FIELD = 'email' 
    REQUIRED_FIELDS = ['username'] 

そして、ここに私の設定INSTALLED_APPS

INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'debug_toolbar', 
    'rest_framework', 
    'compressor', 
    'authentication' 
] 

AUTH_USER_MODEL = 'authentication.Account' 

ある問題ここで私は、Djangoの移行プロセスはauth.0001_initialを渡すことであり、それは

で失敗する私の移行を作る admin.0001_initialを作成する直接ジャンプに気づきます

django.db.utils.IntegrityError: (1215, u'Cannot add foreign key constraint')

どうすればこの問題を解決できますか?

答えて

1

私はこの簡単な手順で、私の問題を解決することができた:

  1. 実行python manage.py makemigrations authenticationからAUTH_USER_MODELを使用しているとき、それは移行プロセスを変更することdjango.contrib.authauth_userテーブルの移行を置き換えますので。したがって、authenticationの移行ファイルを提供できない場合、アプリケーションの移行は失敗します。
  2. run python manage.py migrate

ビンゴ!

関連する問題