我有一个抽象的mixin类,它将Django模型字段添加到从其继承的任何具体类中。
在类初始化时-运行makemigrations
时-我希望继承类通过blank=
True
或{{1}定义继承字段是必需字段还是可选字段}属性。
我尝试了各种False
和Meta
方法,但无法弄清楚抽象的mixin类如何从继承的类中获取信息。
这是天真的尝试:
__new__
在此先感谢您提供的任何帮助。
答案 0 :(得分:0)
您不能在数据库级别执行此操作。 makemigrations
实际上并不初始化您的模型来创建迁移文件。
但是由于您尝试在TextField
上强制执行此操作,因此无论如何都无法在数据库级别强制执行此操作({blank
仅在通过full_clean()
方法验证模型时使用),您可以覆盖clean()
上的DescriptionMixin
方法,检查self.blank
的值并适当地提高ValidationError
。
答案 1 :(得分:0)
使用此方法已解决(实际上是Django上的Wagtail):
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs)
self._meta.get_field('description').blank = not getattr(self, 'description_required', False)