Django Почему не срабатывает проверка формы
Собственно вопрос вот в чем, почему не срабатывает проверка, логика такая что пользователь добавляет название и ссылку а программа "дает" ссылке название и нужно проверить чтоб названия не повторялись с тем что уже есть. По сути происходит что форма не валидна. И можно сказать что проверка проходит но тогда нужно вернуть станицу со всеми данными и ошибку, а я только нашел как вернуть шаблон страницы или же перенаправить на нее саму же. Форма становится не валидная когда я добавляю unique=True в модель, а то что происходит в def title_valid(self) вообще ни чего. Помогите пожалуйста
class LinkPage(ListView):
model = Link
template_name = 'links/links.html'
context_object_name = 'links'
ordering = ['-id']
def get_context_data(self, *, object_list=None, **kwargs):
ctx = super(LinkPage, self).get_context_data(**kwargs)
ctx['form'] = LinkAddForm
ctx['allmylinks'] = list(Link.objects.filter(user=self.request.user))
return ctx
def post(self, request, *args, **kwargs):
post = request.POST.copy()
post['user'] = request.user
request.POST = post
context = LinkAddForm(request.POST)
if context.is_valid():
context.save()
return redirect('linkpage')
else:
return HttpResponse(u'ОШИБОЧКА')
class Link(models.Model):
title = models.CharField(max_length=30, unique=True)
link = models.CharField(max_length=300)
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
def __str__(self):
return self.title
class LinkAddForm(forms.ModelForm):
title = forms.CharField(max_length=100, label='Название cсылки')
link = forms.CharField(max_length=100, label='Ссылка')
def title_valid(self):
data = self.cleaned_data['title']
if data == Link.objects.get('title'):
print('shit')
raise ValidationError('Такое название уже существует')
else:
return data
class Meta:
model = Link
fields = ['title', 'link', 'user']
widgets = {'user': forms.HiddenInput()}
{% block main-section %}
<h1>Создание ссылок</h1>
<form class="container" method="POST">
<h3>Комментарии</h3>
{% csrf_token %}
{{ form }}
<button class="btn btn-outline-danger" type="submit">Отправить</button>
</form>
<h1>Доступные ссылки</h1>
{% for link in allmylinks %}
<div>
ССЫЛКА - <a href="{{ link.link }}">/link/{{ link.title }}/</a>
</div>
{% endfor %}
{% endblock %}