Я пытаюсь создать некоторые объекты с ОЦК Джанго FormView
код для form_class
как это:формы не вызывалась
class UrlForm(forms.Form):
url = forms.CharField(required=True,
help_text=_("This should be an absolute path, excluding the domain name.\
Example: '/events/search/'."),
widget=forms.TextInput(attrs={'style':'width:400px;'}))
title = forms.CharField(required=True, widget=forms.Textarea())
description = forms.CharField(required=True, widget=forms.Textarea())
keywords = forms.CharField(required=True, widget=forms.Textarea())
def clean(self):
cleaned_data = super(UrlForm, self).clean()
url = cleaned_data.get('url')
try:
Url.objects.get(url=url)
raise forms.ValidationError("Seo Url already exists.")
except:
pass
return cleaned_data
и я использовать это представление для визуализации формы:
class CreateSeoByUrl(FormView):
template_name = 'create_seo_by_url.html'
form_class = UrlForm
def get_success_url(self):
return reverse('dashboard:index')
def post(self, request, *args, **kwargs):
url = Url.objects.create(url= request.POST.get('url'))
seo = Seo.objects.create(
title = request.POST.get('title'),
description = request.POST.get('description'),
keywords = request.POST.get('keywords'),
content_object=url)
return redirect(self.get_success_url())
URL-адрес должен быть уникальным, поэтому я пытаюсь поднять ValidationError
, если существует Url с одинаковым значением. Но уловка не входит в чистый метод формы и не в form_valid
или form_invalid
, это просто sh oots, чтобы отправить метод и пытается создать объекты url и seo. Почему мой метод clean/form_valid/invalid не получает вызов .. я нахожусь на своем конце!
Создание def post (...) для def form_valid (self, form) сделал трюк. –