Добрый день! Делаю приложение для офиса, уже понял как делать проверки полей, но если поля вообще не заполнены, то вылезает ошибка 'check_for_duplicate_company' object has no attribute 'client' в строке файла forms.py return self.client or None функции get_client. Как мне вывести ошибку на форму "Поля не заполнены"? Если убрать у полей свойство required=False, то возникает ошибка key error в строке inn = cleaned_data['inn']. Вот сам код:
forms.py
class check_for_duplicate_company(forms.Form):
inn = forms.CharField(label=u'ИНН', required=False, max_length=10, min_length=10, widget=forms.widgets.TextInput(attrs={'id':'inn_company'}))
kpp = forms.CharField(label=u'КПП', required=False, max_length=9, min_length=9, widget=forms.widgets.TextInput(attrs={'id':'kpp'}))
def clean(self):
cleaned_data = super(check_for_duplicate_company, self).clean()
inn = cleaned_data['inn']
kpp = cleaned_data['kpp']
if inn and kpp:
if re.match(r"^[0-9]{10}$", inn) == None:
raise forms.ValidationError(u'Неверный формат ИНН')
if re.match(r"^[0-9]{9}$", kpp) == None:
raise forms.ValidationError(u'Неверный формат КПП')
if not self.errors:
client = Client.objects.filter(INN=inn)
if client:
if client.count() > 1:
raise forms.ValidationError(u'В базе данных обнаружен дубликат контрагента')
self.client = Client.objects.get(INN=inn)
branch = Branch.objects.filter(KPP=kpp,Client=client)
if branch:
if branch.count() > 1:
raise forms.ValidationError(u'В базе данных обнаружен дубликат филиала')
self.branch = Branch.objects.get(KPP=kpp,Client=client)
else:
self.branch = None
else:
self.client = None
self.inn = inn
self.kpp = kpp
return cleaned_data
def get_client(self):
return self.client or None
def get_branch(self):
return self.branch or None
views.py
def addclient_check_client(request,type_client):
args = {}
args.update(csrf(request))
if type_client == 'company':
form = check_for_duplicate_company(request.POST)
....
if request.POST:
if form.is_valid():
if type_client == 'company':
inn = request.POST['inn']
kpp = request.POST['kpp']
if form.get_client():
if form.get_branch():
return HttpResponseRedirect(reverse('index:card_client', args=[form.get_branch().id]))
else:
return HttpResponseRedirect(reverse('contract_department:addclient_company_worddata_branch', args=[form.get_client().id, kpp]))
else:
return HttpResponseRedirect(reverse('contract_department:addclient_company_worddata_client', args=[inn, kpp()]))
else:
return render(request, 'addclient/check_client.html', {'form': form})
....
else:
args['form'] = form
args['type'] = type_client
return render_to_response('addclient/check_client.html', args, context_instance=RequestContext(request, processors=[custom_proc]))