2015-11-05 4 views
0

У меня возникли проблемы с проверкой одного поля в Django. Что у меня есть:Подтвердить одно поле ModelForm в Django

class MoForm(ModelForm): 
    def check_for_zero_cost(self): 
    cost = self.cleaned_data['total_cost'] 
    if cost <= 0: 
     raise forms.ValidationError("You value is less than zero") 
    return cost 

Я получаю исключение, когда пытаюсь проверить. Это происходит, как

global name 'forms' is not defined 

Я попытался ValidationError("You value is less than zero") без точки к forms, но это вызовет исключение и то, что я хочу, это просто ошибка будет добавлен в список форм ошибок. Думаю, причина, по которой я получаю эти ошибки, состоит в том, что у меня нет forms.ModelForm в качестве первого аргумента в моем классе. Если я это сделаю, то я получу следующую ошибку:

name 'forms' is not defined 

Может ли кто-нибудь помочь?

+1

Необходимо импортировать его. 'from django import forms' –

+0

Как вы называете этот метод? Обычно проверка выполняется в методах 'clean()' или 'clean_ ()'. –

ответ

1

Вы не должны писать свой собственный метод для проверки отдельного поля формы. Вы должны использовать метод clean_<fieldname>() (в данном случае это clean_total_cost) для формы, вот doc.

from django import forms 

class QuoteForm(forms.ModelForm): 
    def clean_total_cost(self): 
     total_cost = self.cleaned_data['total_cost'] 
     if total_cost <= 0: 
      raise forms.ValidationError("Your value is less than zero") 

     return total_cost