Django的管理clean_fields覆盖,保持以前的数据提交
问题描述:
我的问题很简单,我有一个类,在我的应用程序模型,从models.Model继承。 我重写了django-admin的clean_fields方法,以便对我的表单执行一些自定义验证。 问题是,当它从我的自定义验证中引发ValidationError时,如果用户尝试再次使用正确的信息提交表单,它将始终保留之前提交的数据。Django的管理clean_fields覆盖,保持以前的数据提交
class SignedOffModelValidation(models.Model): class Meta: abstract = True def clean_fields(self, exclude = None): super(SignedOffModelValidation, self).clean_fields(exclude) errors = {} if getattr(self, self._meta.immutable_sign_off_field, False): relation_fields = [ f for f in self._meta.fields if isinstance(f,(models.ForeignKey,models.ManyToManyField,)) and not f.name.endswith('_ptr') ] for field in relation_fields: try: field_value = getattr(self, field.name) signed_off = getattr( field_value, field_value._meta.immutable_sign_off_field ) except (AttributeError, ObjectDoesNotExist,): continue else: if not signed_off: msg = u'In order to signeoff, %s needs to be Signed Off' % \ (str(field_value),) errors[field.name] = ([msg]) if errors: raise ValidationError(errors)
任何帮助将不胜感激!
问候
我有一个预感你的问题是与操纵这个模型的视图/表单相关联。任何机会,你可以发布? – leech 2011-09-23 01:12:59