【发布时间】:2017-08-05 06:34:49
【问题描述】:
我正在关注这两个参考(one 和 two)来拥有一个自定义用户模型,以便通过电子邮件进行身份验证,并为其添加一个额外的字段。
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
unique=True,
max_length=254,
)
mobile_number = models.IntegerField(unique=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = UserManager()
...
...
class Meta:
db_table = 'auth_user'
...
...
如您所见,我已将db_table='auth_user' 添加到类的元字段中。此外,我已将 AUTH_USER_MODEL = 'accounts.User' 和用户模型应用程序(即帐户)包含在 settings.py 中的 INSTALLED_APPS 中。此外,我从应用程序中删除了迁移文件夹。
然后尝试迁移:
$ python manage.py makemigrations accounts
Migrations for 'accounts':
accounts/migrations/0001_initial.py:
- Create model User
$ python manage.py migrate accounts
这给了我一个错误:
django.db.migrations.exceptions.InconsistentMigrationHistory:迁移 admin.0001_initial 在其依赖项 accounts.0001_initial 之前应用于数据库“默认”。
如何从现有的 django 用户模型迁移到自定义用户模型?
【问题讨论】:
-
您是否清除了
django_migrations表中的任何旧条目? -
@nik_m 不。我应该清除所有数据库吗?
-
清除它。只是为了确保你有一张新鲜的桌子。之后运行 makemigrations 并再次迁移。
-
@nik_m 不,我没有清除数据库。实际上数据库中有一些数据。不删除数据库就没有其他方法可以迁移吗?
-
Hmm... 似乎在
admin.0001_initial.py迁移文件中,您有一个尚未应用的accounts.0001_initial.py迁移依赖项(元组列表)。这就是错误的原因。在您提供的第一个链接中,它显示截断django_migrations表。你做到了吗?