функция clean-titla, описанная в forms.py, выполняется (если в поле titla вписать "create", то "статья" не сохранится), хотя в коде вызвана не была. Объясните, почему она выполняется?
forms.py:
from django import forms
from .models import Cho
from django.core.exceptions import ValidationError
class ChoForm(forms.Form):
task = forms.CharField()
titla = forms.CharField(max_length = 50)
slug = forms.SlugField(max_length = 150)
def clean_titla(self):
new_titla = self.cleaned_data['titla'].lower()
if new_titla == 'create':
raise ValidationError('error')
return new_titla
def Save(self):
new_cho = Cho.objects.create(
task = self.cleaned_data['task'],
slug = self.cleaned_data['slug'],
titla = self.cleaned_data['titla']
)
return new_cho
views.py:
from django.http import Http404, HttpResponseRedirect
from django.shortcuts import render
from django.views.generic import View
from django.shortcuts import redirect
from .models import Cho
from .forms import ChoForm
def index(request):
posts = Cho.objects.all()
return render (request, 'main/main.html', context = {'posts': posts})
def post(request, slug):
post = Cho.objects.get(slug = slug)
return render (request, 'main/post.html', context = {'post': post})
class ChoCreate(View):
def get(self, request):
form = ChoForm()
return render(request, 'main/ChoCreate.html', context = {'form': form})
def post(self, request):
bound_form = ChoForm(request.POST)
if bound_form.is_valid():
new_cho = bound_form.Save()
return render(request, 'main/ChoCreate.html', context={'form':bound_form})
models.py (на всякий случай)
from django.db import models
class Cho(models.Model):
task = models.TextField('описание', db_index = True)
titla = models.CharField('название', max_length=50)
slug = models.SlugField(max_length = 150, unique = True)
tag = models.ManyToManyField('Tags', blank = True, related_name = 'posts')
def __str__(self):
return self.task
def __str__(self):
return self.titla
def __str__(self):
return self.slug
Заранее спасибо!
Updated 13 Jan. 2021, 22:53 by CaIIIafhf.