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

Jur*_*jak 7 django inline-formset

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

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

在"正常"形式中,它通过使用def clean_fieldXY(self)我的方法工作return cleaned_value.

请帮忙.

Jor*_*ter 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
Run Code Online (Sandbox Code Playgroud)

然后,在 myapp/views.py

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

def editmything(request):
    MyFormSet = inlineformset_factory(ParentRecord, ChildRecord, form=InlineFormsetForm)
Run Code Online (Sandbox Code Playgroud)