django - 删除 django 模型后仍然出现 slug 错误
问题描述
我在其中创建了一个模型,models.py
但忘记添加 slug 字段。错误Key (slug)=() is duplicated
出现在python manage.py migrate
命令之后。所以我删除了我的模型和 slug 字段并再次运行迁移命令,但该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
我想要的只是成功运行迁移而没有任何错误。
解决方案
您需要创建一个迁移,它将添加SlugField
withnull=True
和 with nodefault
指定 for default=None
。然后创建一个空迁移,并对其进行修改,以便填充之前迁移中添加的 slug 字段。然后,您可以创建一个新的迁移来删除null=True
约束。
精简版:
- 创建可为空的列
- 通过数据迁移填充列的所有空值。
- 使列不可为空。
推荐阅读
- python - 两个横截面的简单算术返回所有 NaN
- esp8266 - ESP8266 上的 String() 函数影响模拟到数字的采样率?
- python - 熊猫数据结构中的大小不变性
- angularjs - 从laravel 5.7 api返回JSON对象时,angularjs中的$ http错误数据错误
- matplotlib - fig.tight_layout() 但绘图仍然重叠
- python - “ascii”编解码器无法解码位置 28 中的字节 0xad:序数不在范围内(128)
- mysql - 解析 mysql.log 文件
- javascript - JavaScript/ThreeJS TypeError:无法读取未定义的属性“集”
- c++ - onTimer() 不触发
- python - Python:将字符串中单词的第一个字符大写,除了一个单词