从旧模块中删除依赖于自定义字段的 Django 迁移
Posted
技术标签:
【中文标题】从旧模块中删除依赖于自定义字段的 Django 迁移【英文标题】:Removing a Django migration that depends on custom field from an old module 【发布时间】:2016-05-07 22:00:50 【问题描述】:我有一个 Django 1.8 应用程序,其初始迁移依赖于 django-interval-field,如下所示:
import interval.fields
migrations.CreateModel(
name='Item',
fields=[
...
('estimated_time', interval.fields.IntervalField(null=True, blank=True)),
我已经迁移这个字段以使用 Django 的内置 DurationField,我不再使用这个模块,但我需要将它保存在 requirements.txt 中以便我的迁移运行。
但是,在尝试升级到 Django 1.9 时,此模块会引发错误。此外,我不能永远保留这个模块。摆脱它会很好。
我已尝试压缩迁移,但压缩后的迁移仍包含 import interval.fields
语句,并创建了间隔字段。压缩所做的就是将所有内容连接到一个文件中。
谁能告诉我如何继续删除这个模块?
有问题的 Django 应用程序是 here。
【问题讨论】:
【参考方案1】:所以,你的挤压不是真正的挤压
-
从
requirements.txt
中删除此包
从您的models.py
中删除import interval.fields
将您的interval.fields.IntervalField(xxx)
修改为相关my_app_label/migrations/1234_some_migrations.py
中Django 中可用的某些类型
完成
【讨论】:
【参考方案2】:在所有迁移文件中找到interval.fields.IntervalField
的所有声明(对于有问题的模型字段)并替换为IntegerField
。
只要您在迁移过程中没有使用Interval字段的数据迁移,就可以了。
【讨论】:
以上是关于从旧模块中删除依赖于自定义字段的 Django 迁移的主要内容,如果未能解决你的问题,请参考以下文章