2010-09-10 10 views
7

Potrzebuję wyczyścić konkretne pole w formularzu wbudowanym i nie mogę wymyślić, jak to zrobić.Jak wyczyścić określone pole w pliku InlineFormSet?

Próbowałem z metody formularza def clean(self), ale nie wiem, gdzie zapisać wyczyszczoną wartość. Jeśli spróbuję ustawić oczyszczoną wartość na forms[0].data['field'], pojawia się błąd "Ta instancja QueryDict jest niezmienna".

W "normalnych" formularzach działa on przy użyciu metody def clean_fieldXY(self), w której I return cleaned_value.

Proszę o pomoc.

Odpowiedz

9

Można ustawić wbudowany zestaw formularzy, aby użyć klasy formularza, a następnie można dla niej utworzyć funkcję clean.

W 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 

Następnie w myapp/views.py

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

def editmything(request): 
    MyFormSet = inlineformset_factory(ParentRecord, ChildRecord, form=InlineFormsetForm) 
Powiązane problemy