Kak*_*kar 12 django django-migrations
我正在遵循这两个引用(一个和两个)来创建自定义用户模型,以便通过电子邮件进行身份验证并向其中添加一个额外的字段。
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'
...
...
Run Code Online (Sandbox Code Playgroud)
如您所见,我已经db_table='auth_user'在类的Meta字段中添加了。另外,我在settings.py中包含了AUTH_USER_MODEL = 'accounts.User'和用户模型应用程序(即帐户)INSTALLED_APPS。此外,我从应用程序中删除了Migrations文件夹。
然后尝试迁移:
$ python manage.py makemigrations accounts
Migrations for 'accounts':
accounts/migrations/0001_initial.py:
- Create model User
$ python manage.py migrate accounts
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
django.db.migrations.exceptions.InconsistentMigrationHistory:迁移admin.0001_initial在其依赖项帐户之前应用。数据库'default'上的0001_initial。
如何从现有的django用户模型迁移到自定义用户模型?
Haz*_*ziq 22
解决方案是撤消依赖 AUTH_USER_MODEL 的现有迁移,如本答案所述。如果您尝试撤消 admin、auth、contenttypes 和 session 的迁移,并且您收到如下错误:
错误:auth.User.groups:(fields.E304)“User.groups”的反向访问器与“Profile.groups”的反向访问器冲突。....
AUTH_USER_MODEL在 settings.py 中注释掉/撤消,如果你改变了它。INSTALLED_APPSsettings.py 的新 AUTH_MODEL 的 django 应用程序。python manage.py migrate admin zero
python manage.py migrate auth zero
python manage.py migrate contenttypes zero
python manage.py migrate sessions zero
Run Code Online (Sandbox Code Playgroud)
INSTALLED_APPS和设置AUTH_USER_MODEL在settings.py一次。运行:python manage.py migrate AUTH_APP,您可能还需要为您的身份验证模型应用程序进行迁移:python manage.py makemigrations AUTH_APP
应用您通过以下方式撤消的所有迁移:python manage.py migrate。
你都完成了。
注意:您将丢失数据库中存在的所有现有用户。
您必须从迁移历史记录中清除admin,auth,contenttypes和session,并删除表。首先,删除应用程序的迁移文件夹,然后键入以下内容:
python manage.py migrate admin zero
python manage.py migrate auth zero
python manage.py migrate contenttypes zero
python manage.py migrate sessions zero
Run Code Online (Sandbox Code Playgroud)
之后,您可以运行makemigrations accounts和migrate accounts。
与我的特定情况一样,其他答案没有帮助(即使在我尝试删除表migrate ... zero并删除迁移文件夹后仍然出现错误),以下内容有所帮助,但我是在最开始的,因此它删除db.sqlite3第一次迁移时创建的文件没有问题。(根据您的 settings.py,您可能有不同的数据库文件)。
只有当您确定不会丢失数据库文件中的重要数据(例如,您还没有在数据库中存储太多信息并且重新开始并不困难)时,您才能真正做到这一点,并且您将需要再次迁移所有内容。
小智 5
从数据库中删除现有的所有表。 [注意:数据会丢失]
从所有应用程序中删除 pycache 和迁移。
为您的相关应用程序运行迁移
python manage.py makemigrations users
Run Code Online (Sandbox Code Playgroud)
将表迁移到数据库
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9406 次 |
| 最近记录: |