Django Проверка формы не работает на поле - PullRequest
0 голосов
/ 01 мая 2020

Я делаю простую проверку формы. Но не уверен, где я скучаю. Здесь я поставил валидацию поля 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 %}
...