Django4.0 迁移-删除模型字段时的注意事项

2022-03-16 17:50 更新

如果在旧迁移中引用了自定义模型字段,则从项目或第三方应用中删除这些字段将导致问题。

为了解决这种情况,Django 提供了一些模型字段属性,使用 系统检查框架 来协助弃用模型字段。

将 ​system_check_deprecated_details ​属性添加到你的模型字段中,类似于:

class IPAddressField(Field):
    system_check_deprecated_details = {
        'msg': (
            'IPAddressField has been deprecated. Support for it (except '
            'in historical migrations) will be removed in Django 1.9.'
        ),
        'hint': 'Use GenericIPAddressField instead.',  # optional
        'id': 'fields.W900',  # pick a unique ID for your field.
    }

在你选择的弃用期(Django 本身的字段有两个或三个功能版本)之后,将 ​system_check_deprecated_details ​属性改为 ​system_check_removed_details ​并更新类似于以下内容的字典:

class IPAddressField(Field):
    system_check_removed_details = {
        'msg': (
            'IPAddressField has been removed except for support in '
            'historical migrations.'
        ),
        'hint': 'Use GenericIPAddressField instead.',
        'id': 'fields.E900',  # pick a unique ID for your field.
    }

你应该保留该字段在数据库迁移中操作所需的方法,如 ​__init__()​,​deconstruct()​和 ​get_internal_type()​。只要任何引用该字段的迁移存在,就保留这个存根字段。例如,在压缩迁移并删除旧的迁移后,你应该可以完全删除该字段。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号