我试图通过继承AbstractBaseUser来扩展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')
我该如何解决这个问题呢?
答案 0 :(得分:2)
通过这个简单的步骤,我能够解决我的问题:
python manage.py makemigrations authentication
- 因为在使用AUTH_USER_MODEL
时,它将替换auth_user
django.contrib.auth
表的迁移,从而改变迁移过程。因此,如果我们无法为authentication
app提供迁移文件,那么迁移无疑将失败。 python manage.py migrate
。Binggo!