gpt4 book ai didi

Django-admin clean_fields 覆盖,在提交时保留以前的数据

转载 作者:行者123 更新时间:2023-12-02 08:10:33 29 4
gpt4 key购买 nike

我的问题很简单,我的应用程序模型中有一个继承自 models.Model 的类。

我正在重写 django-admin 的 clean_fields 方法,以便对我的表单执行一些自定义验证。问题是,当它从我的自定义验证中引发 ValidationError 时,如果用户尝试使用正确的信息再次提交表单,它始终会保留上次提交的数据。

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)

如有任何帮助,我们将不胜感激!

最诚挚的问候

最佳答案

您应该使用clean()方法而不是clean_fields()。这在 Django documentation 中非常清楚。 .

关于Django-admin clean_fields 覆盖,在提交时保留以前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4375856/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com