我已经从 Django 1.6.5(带有南迁移)升级到 Django 1.8。我已按照此处的说明进行操作: https ://docs.djangoproject.com/en/1.8/topics/migrations/#upgrading-from-south
因此,我删除了 South,删除了我以前的迁移并运行python manage.py makemigrations
,这会生成一个新的迁移文件。然后我跑去python manage.py migrate --fake-initial
伪造初始迁移。然后我跑python manage.py migrate
。
一切运行良好,没有错误。
我有一个自定义用户模型,它继承了AbstractBaseUser
. last_login
在 Django 1.8中,它现在能够接受值的字段似乎发生了变化null
(https://docs.djangoproject.com/fr/1.8/ref/contrib/auth/#django.contrib.auth.models .User.last_login)。
我遇到的问题是迁移不会更改last_login
数据库表中的字段以接受空值。结果,当我尝试保存时,我得到了一个IntegrityError
说法(1048, "Column 'last_login' cannot be null")
。
我怎样才能解决这个问题?我需要手动更改数据库中的字段,还是有办法通过迁移来修复它?
编辑
当我运行python manage.py migrate --fake-initial
输出是这样的:运行迁移:
Rendering model states... DONE
Applying contenttypes.0001_initial... FAKED
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0001_initial... FAKED
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying core.0001_initial... FAKED
Applying admin.0001_initial... FAKED
Applying sessions.0001_initial... FAKED
但是,当我查看数据库时,我仍然看到user_last_login
非空。