我对我在整个网站中使用的字段组合进行了以下自定义验证:
class MyModelForm(forms.ModelForm):
my_field_type_constant = 'my_field_type'
my_field_code_constant = 'my_field_code'
class Meta:
model = MyModel
def validate_my_field_code(self, my_field_code_error, my_field_type, my_field_code):
validate = URLValidator(verify_exists=False)
try:
validate(my_field_code)
except ValidationError:
messsge = u"My custom error"
self._errors[my_field_code_error] = self.error_class([messsge])
def clean(self):
cleaned_data = super(MyModelForm, self).clean()
my_field_type = cleaned_data.get(self.my_field_type_constant)
my_field_code = cleaned_data.get(self.my_field_code_constant)
my_field_type_from_model = other_model.models.my_field_TYPES[1][0]
if my_field_type == my_field_type_from_model:
self.validate_my_field_code(self.my_field_code_constant, my_field_type, my_field_code)
return cleaned_data
我在我网站的许多表单中使用了my_field_type和my_field_code的组合。我想坚持DRY原则。如何将这些字段的验证用于其他表单而不复制并粘贴到所有其他表单中?
答案 0 :(得分:3)
为什么不直接使用将使用此验证的其他ModelForm类:
class MyOtherModelForm(MyModelForm):
pass
然后你通过继承免费获得它。