3
私の質問は静かでシンプルですが、私はmodels.Modelから継承する私のアプリケーションモデルのクラスを持っています。 私のフォームにカスタム検証を実行するために、django-adminのclean_fieldsメソッドをオーバーライドしています。 問題は、ユーザーがカスタム検証からValidationErrorを発生させたときに、ユーザーが正しい情報でフォームを再度送信しようとすると、以前の送信からのデータが常に保持されることです。Django-admin 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