在Django中从父窗体上的子窗体中引发验证错误

时间:2018-03-26 12:41:26

标签: python django forms

我们说我有这种形式:

from django import forms
from django.core.exceptions import ValidationError

class NameForm(forms.form):
    name = forms.CharField(max_length=200)

class NameAgeForm(NameForm):
    age = forms.IntegerField()

    def clean(self):
        data = self.cleaned_data
        if data.get('age') == 24 and data.get('name') == 'Nebu':
            raise ValidationError({'name': "You can't pick that name and age, they are mine!"})

问题是,我有一个子表单,验证正在进行中。 但我希望我的字段错误显示在NameForm上。

旁注我无法访问父表单,因此解决方案必须来自孩子。

现在,这可能吗?

1 个答案:

答案 0 :(得分:1)

NameAgeForm上的

Clean()方法必须为每个字段添加自定义验证。对于field-specific验证,此字段验证特定于您当前的表单,我们不想将其放入ChildForm。相反,我们在ParentForm中编写一个清理方法。所以Django对你没有帮助。