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

站在用户的角度思考问题,与客户深入沟通,找到滨海新区网站设计与滨海新区网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、成都网站制作、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖滨海新区地区。
为了解决这种情况,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()。只要任何引用该字段的迁移存在,就保留这个存根字段。例如,在压缩迁移并删除旧的迁移后,你应该可以完全删除该字段。