【发布时间】:2021-02-08 16:14:53
【问题描述】:
我有一个自定义模型字段定义为:
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, *args, **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() 方法,但即使添加了一个似乎在文档中描述的方法(我读为删除你覆盖的kwargs init 方法):
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, path, args, kwargs
...它仍然没有创建任何迁移以使该字段可为空/可空白。谁能告诉我我错过了什么?
【问题讨论】:
标签: python django django-migrations