【问题标题】:Removing a Django migration that depends on custom field from an old module从旧模块中删除依赖于自定义字段的 Django 迁移
【发布时间】: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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      只要您在迁移过程中没有使用Interval字段的数据迁移,就可以了。

      【讨论】:

        猜你喜欢
        • 2015-03-12
        • 2020-07-30
        • 2016-04-20
        • 1970-01-01
        • 1970-01-01
        • 2020-01-19
        • 1970-01-01
        • 2021-11-18
        • 2011-10-28
        相关资源
        最近更新 更多