Я делаю простую проверку формы. Но не уверен, где я скучаю. Здесь я поставил валидацию поля company_name, которое будет проверяться, если название моей компании будет равно «BFR». Однако после отправки формы я не получаю никакой ошибки проверки. Не могли бы вы помочь мне в этом?
forms.py
from django import forms
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Submit, Button
from django.forms import ValidationError
from .models import Company
class CompanyForm(forms.ModelForm):
compname = forms.CharField(label='Name : ', required=True)
class Meta:
model = Company
fields = ['compname']
labels = {
'compname': 'Name : ',
}
def clean_compname(self):
company_name = self.clean_data.get('compname')
if (company_name == "BFR"):
raise forms.ValidationError('company name cant be empty')
return company_name
def __init__(self, *args, **kwargs):
super(CompanyForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.attrs['autocomplete'] = 'off'
self.helper.layout = Layout(
'compname',
Submit('save', 'Save changes'),
Button('Reset', 'Reset', css_class='btn btn-info'),
Button('cancel', 'Cancel' , css_class='btn btn-secondary'),
)
models.py
from django.db import models
# Create your models here.
class Company(models.Model):
compname = models.CharField(max_length=20)
def __str__(self):
return self.compname
views.py
from django.shortcuts import render
from django.contrib import messages
from .forms import CompanyForm
from .models import Company
def company_form(request, id=0):
if request.method == 'GET':
if id == 0:
form = CompanyForm()
else:
company = Company.objects.get(pk=id)
form = CompanyForm(instance = company)
return render(request, 'company/company_form.html', {'form': form})
else:
if id==0:
form = CompanyForm(request.POST)
if form.is_valid():
form.save()
messages.success(request, f'Company has been created.')
else:
company = Company.objects.get(pk=id)
form = CompanyForm(request.POST, instance=company)
if form.is_valid():
form.save()
messages.success(request, f'Company has been Updated.')
return redirect('company-list')
company / company_form. html
{% extends "landing/base.html" %}
{% load crispy_forms_tags %}
{% block landing_content %}
{% crispy form %}
{% endblock landing_content %}