Django,如何改变"空白"父模型的字段属性?

时间:2014-07-03 10:39:52

标签: python django inheritance django-models

我有两个型号,例如:

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())

3 个答案:

答案 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)

随着讨论的进行,我认为正确的答案是:

你不是在模特级别上做的。我应该在表单级别而不是在模型中进行这种验证。最好的地方是:表单字段参数或表单清理方法