我有两个型号,例如:
Parent(models.Model):
mytext= models.Chafield(max_lenght=250, blank=True)
Child(Parent):
mytext_comment=models.Chafield(max_lenght=250)
但在孩子身上,我希望mytext
是强制性的。
在孩子mytext.blank=False
中调用__init__
是否足够?
注意这不是抽象方法,因为我希望能够在Parent上使用Manager(例如Parent.objects.all())
答案 0 :(得分:0)
我认为不可能。来自Django Documentation:
此限制仅适用于Field实例的属性。 如果您愿意,可以覆盖正常的Python属性。它也只是 适用于Python看到的属性名称:如果是的话 手动指定数据库列名称,您可以拥有相同的名称 列名出现在子模型和祖先模型中 多表继承(它们是两个不同数据库中的列 表)。
PS:我试图像你建议的那样,但我得到的错误如unicode object has no attribute blank
答案 1 :(得分:0)
嗯,你可以尝试这个解决方案:
Parent(models.Model):
mytext= models.Chafield(max_lenght=250, blank=True)
Child(Parent):
mytext_comment=models.Chafield(max_lenght=250)
Child._meta.get_field('mytext').blank = True
如果有效,请告诉我吗?
答案 2 :(得分:0)
随着讨论的进行,我认为正确的答案是:
你不是在模特级别上做的。我应该在表单级别而不是在模型中进行这种验证。最好的地方是:表单字段参数或表单清理方法