如何解决Django makemigrations 如何触发自定义模型字段的更改?
class PriceField(models.DecimalField):
def __init__(self,*args,**kwargs):
kwargs['max_digits'] = 30
kwargs['decimal_places'] = 20
super().__init__(*args,**kwargs)
我想改变它,使它也可以为空/空白,所以我添加:
class PriceField(models.DecimalField):
def __init__(self,**kwargs):
kwargs['max_digits'] = 30
kwargs['decimal_places'] = 20
kwargs['null'] = True
kwargs['blank'] = True
super().__init__(*args,**kwargs)
但是,添加并运行 makemigrations
后,不会创建新的迁移。阅读了 https://docs.djangoproject.com/en/3.1/howto/custom-model-fields/#field-deconstruction 处的文档后,我认为问题可能是缺少 deconstruct()
方法,但即使添加了一个似乎在文档中描述的方法(我认为是删除您在 init 方法中覆盖的 kwargs):
def deconstruct(self):
name,path,args,kwargs = super().deconstruct()
del kwargs['max_digits']
del kwargs['decimal_places']
del kwargs['null']
del kwargs['blank']
return name,kwargs
...它仍然不会创建任何迁移以使该字段可以为空/可以为空。谁能告诉我我错过了什么?
解决方法
尝试像在任何其他标准 django 字段中一样将 null 和空白参数传递给模型定义中的字段初始化
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。