如何清理InlineFormSet中的某个字段?

时间:2010-09-10 17:37:11

标签: django inline-formset

我需要清理内联formset中的特定字段,我无法弄清楚如何做到这一点。

我尝试使用formsets def clean(self)方法,但不知道在哪里保存已清理的值。如果我尝试将清理后的值设置为forms[0].data['field'],则会出现“此QueryDict实例不可变”错误。

在“普通”表单中,它使用我def clean_fieldXY(self)的{​​{1}}方法。

请帮忙。

1 个答案:

答案 0 :(得分:9)

您可以将内联formset设置为使用表单类,然后可以为该字段创建clean函数。

myapp/forms.py

class InlineFormsetForm(forms.Form)
    myfield = forms.CharField(required=False, max_length=50)

    def clean_myfield(self):
        data = self.cleaned_data['myfield']
        if data == 'badinput':
            raise forms.ValidationError("I hates it!")
        return data

然后,在myapp/views.py

from myapp.forms import InlineFormsetForm
from myapp.models import ParentRecord, ChildRecord

def editmything(request):
    MyFormSet = inlineformset_factory(ParentRecord, ChildRecord, form=InlineFormsetForm)