当在我的Django应用程序如何调用只有验证方法的子集,我使用的模型(我们称之为基于myModel),以及一种形式:编辑工作
class Mymodel(models.Model):
firstField(...)
secondField(...)
class MymodelAddform(ModelForm):
def clean_firstField(self):
#stuff
def clean_secondField(self):
#stuff again
def clean(self):
#performs stuff with all the fields
class Meta:
model = Mymodel
现在我想添加另一种形式, MymodelEditform
的基础上,为MyModel再次,只用secondField
,只有secondField
验证
两个选项,我认为(我写他们两个不工作):
class MymodelEditform(ModelForm):
class Meta:
model = Mymodel
fields = ['secondField']
这里的问题是,clean_secondField
不叫,除非我重新定义它,我想,以避免clean_secondField
电话上定义的另一个方法(不过,如果它是唯一的选择,就这样吧)
class MymodelEditform(MymodelAddform):
class Meta:
model = Mymodel
fields = ['secondField']
这里的问题是调用clean()验证,并且由于我只使用了字段的一个子集,所以失败了。
这个问题很明显:我如何让它按预期工作?
好吧,我没有看到第二个选项我展示的区别是:所有的验证方法总会被调用,而不仅仅是与'secondField'有关的一些# –
不,我不这么认为。按照你的方式,你从'MymodelAddform'派生出来,它具有所有的字段,并且可能对这些字段调用干净。你可能想要检查'Meta'类如何与继承一起工作。在我的情况下,第二种形式只有一个字段,所以应该只调用其干净的方法。 – Rohan
明确指定要包含的字段已经做了你所建议的(它只调用与你包含的字段相关的验证方法)。但是我没有对我遇到的问题进行足够的测试,使我感到困惑。我编辑了我的问题(实际上,还有另一个clean()方法) –