Как очистить определенное поле в InlineFormSet? - PullRequest
7 голосов
/ 10 сентября 2010

Мне нужно очистить определенное поле во встроенном наборе форм, и я не могу понять, как это сделать.

Я пытался использовать метод formsets def clean(self), но не знаю, где сохранить очищенное значение. Если я пытаюсь установить очищенное значение на forms[0].data['field'], я получаю ошибку «Этот экземпляр QueryDict неизменен».

В «нормальных» формах он работает с использованием метода def clean_fieldXY(self), в котором I return cleaned_value.

Пожалуйста, помогите.

1 Ответ

9 голосов
/ 11 сентября 2010

Вы можете установить встроенный набор форм для использования класса формы, а затем вы можете создать функцию 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)
...