删除依赖于旧模块的自定义字段的Django迁移

时间:2016-01-30 01:17:01

标签: python django django-migrations django-1.8 django-1.9

我有一个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语句,并创建了interval字段。所有挤压都将所有内容连接成一个文件。

有人可以告诉我如何继续删除此模块吗?

有问题的Django应用是here

2 个答案:

答案 0 :(得分:5)

所以,你的挤压并不是真正的压扁

  1. requirements.txt
  2. 中删除此包
  3. import interval.fields
  4. 中删除models.py
  5. 将您的interval.fields.IntervalField(xxx)修改为相关my_app_label/migrations/1234_some_migrations.py
  6. 中Django中的某些类型
  7. 完成

答案 1 :(得分:1)

在所有迁移文件中,找到interval.fields.IntervalField的所有声明(对于相关的模型字段),并替换为IntegerField

只要你没有在迁移过程中使用Interval字段的数据迁移,你应该没问题。