【问题标题】:How to remove custom field without breaking Django migrations?如何在不破坏 Django 迁移的情况下删除自定义字段?
【发布时间】:2018-08-06 12:14:36
【问题描述】:

我从事一个使用旧的django-json-field 库的 Django 1.8 项目。我想删除该库,更新到 Django 1.9 并使用本机 JSONField,但是我的迁移依赖于旧库中的 JSONField,所以我无法删除它。我也无法在不删除它的情况下更新 Django,因为它已被弃用,并且在我尝试更新 Django 时会导致错误。在这种情况下,正确的处理方法是什么?

【问题讨论】:

  • 使用CharField 作为存储 JSON 的中间方式?
  • 使用RunPython
  • 类似的 RunPython 示例,here
  • @WillemVanOnsem 有正确的想法,因为django-json-field 实际上只是一个TextField 包装器(参考:source
  • @Ariel Django 支持原生 JSON 吗?你能分享一些参考吗?

标签: django django-migrations django-jsonfield


【解决方案1】:

正如Burhan Khalid 在上面的评论中所建议的那样,解决方案是

  • 将已弃用的 json-field 复制到文本列
  • 创建迁移
  • 删除已弃用的 json 字段
  • 创建此迁移
  • 没有任何已弃用的 json 字段的痕迹,请删除该软件包。测试一切正常并升级您的应用。

如果这不起作用(可能是因为该 json 字段在其他地方被引用),您只需将该字段更改为 models.py 中的文本,然后通过迁移完成。

【讨论】:

    猜你喜欢
    • 2021-10-12
    • 1970-01-01
    • 2011-01-10
    • 2017-06-17
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多