删除Django模型后,仍会出现slug错误

时间:2018-11-18 18:37:12

标签: django django-models slug django-migrations

我已经在models.py中创建了一个模型,但是忘记添加子弹字段。错误Key (slug)=() is duplicatedpython manage.py migrate命令之后。因此,我删除了我的模型和slug字段,然后再次运行migration命令,但是python manage.py migrate命令仍然显示相同的错误。我无法删除整个数据库,因为我的数据也存储在其他模型中。 这是python manage.py showmigrations 命令的输出:

admin
[X] 0001_initial
[X] 0002_logentry_remove_auto_add
[X] 0003_logentry_add_action_flag_choices
auth
[X] 0001_initial
[X] 0002_alter_permission_name_max_length
[X] 0003_alter_user_email_max_length
[X] 0004_alter_user_username_opts
[X] 0005_alter_user_last_login_null
[X] 0006_require_contenttypes_0002
[X] 0007_alter_validators_add_error_messages
[X] 0008_alter_user_username_max_length
[X] 0009_alter_user_last_name_max_length
contenttypes
[X] 0001_initial
[X] 0002_remove_content_type_name
schooldekho
[X] 0001_initial
[X] 0002_auto_20181114_0012
[X] 0003_auto_20181114_0041
[X] 0004_auto_20181114_0043
[X] 0005_auto_20181116_1759
[X] 0006_school
[ ] 0007_school_slug
[ ] 0008_auto_20181116_2259
[ ] 0009_auto_20181116_2300
[ ] 0010_auto_20181116_2304
[ ] 0011_remove_school_slug
[ ] 0012_auto_20181118_2238
sessions
[X] 0001_initial

我要做的就是成功运行迁移,而不会出现任何错误。

1 个答案:

答案 0 :(得分:1)

您需要创建一个迁移,该迁移将为SlugField添加null=True,并且没有为default指定default=None。然后创建一个空的迁移,并对其进行修改,以便您填充上一次迁移中添加的子域。然后,您可以创建一个新迁移,该迁移将删除null=True约束。

简短版本:

  1. 创建可为空的列
  2. 通过数据迁移填充列的所有空值。
  3. 使列不可为空。