2010-09-10 18 views
7

Satır içi bir formda belirli bir alanı temizlemem gerekiyor ve bunu nasıl yapacağımı anlayamıyorum.InlineFormSet'te belirli bir alan nasıl temizlenir?

Formül def clean(self) yöntemiyle denedim, ancak temizlenen değeri nereye kaydedeceğimi bilmiyorum. Temizlenen değeri forms[0].data['field'] olarak ayarlamaya çalışırsam, "Bu QueryDict örneği değiştirilemiyor" hatası alıyorum.

"Normal" biçimlerde,yöntemini kullanarak I return cleaned_value'u kullanır.

Lütfen

Yardım edin.

cevap

9

Bir form sınıfı kullanmak için satır içi form setini ayarlayabilir ve alan için bir clean işlevi oluşturabilirsiniz. myapp/forms.py yılında

: Sonra

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) 
yılında