2013-02-26 15 views
7

Aşağıdaki model formuna sahibim ve 'billable_work' adlı alana özel doğrulama eklemek istiyorum.Django ModelÖzel özel doğrulama: Gönderilen alan değerlerine nasıl erişilir?

Formda sunulan bir 'proje' alanına nasıl erişirim? Proje değerini (aşağıdaki örnekte 'p') kontrol etmek istiyorum, ancak uygun bir sözdizimini bulamıyorum, böylece gönderilen değeri test edebilirim. Herhangi bir yardım takdir edilecektir.

class EntryForm(forms.ModelForm): 
    class Meta: 
     model = Entries 
     exclude = ('billable_work','notes') 

    billable_work = forms.BooleanField() 
    notes = forms.CharField(widget=forms.Textarea,required=False) 

    def clean_billable_work(self): 
     b = self.cleaned_data['billable_work'] 
     p = form.fields['project'] 

     if b == True and p == 523: 
      raise forms.ValidationError(_("Entries cannot be both billable and NONE: Indirect.")) 
     return self.cleaned_data['billable_work'] 

cevap

12

ben size modeline clean() yöntemi yerine belirli bir form alanının temiz yöntemini geçersiz istiyorum düşünüyorum. Dokümanlar -

Bu yöntem özel model doğrulama sağlamak için kullanılmalıdır ve istenirse için model üzerinde özelliklerini değiştirin. Örneğin, bir alan için bir değer sağlamak için kullanabilir veya tek bir alandan daha fazlasına erişmeyi gerektiren doğrulama işlemini gerçekleştirebilirsiniz.

forma doğrulama koymak istiyorum olmadıysa

sonra form üzerindeki clean() yöntem benzer işlevler ( docs bakınız) sağlar.

+1

Dokümanlardaki bağlantı için teşekkürler. Syntax self.cleaned_data.get ('proje') için arıyordum. Değeri test etmek için bunu bir dizeye dönüştürmem gerekiyor. Bu uygun/geçerli bir yöntem midir? – Mrak

+0

Takip ettiğimden emin değilim? –

İlgili konular