Почему форма Django не проверяет уникальность поля формы?

Метод is_valid не проверяет уникальность формы, и когда я пытаюсь создать новый элемент, он просто ничего не делает.

models.py

from django.db import models
from django.contrib.auth.models import User



class Links(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='Пользователь')
    long_url = models.CharField('Длинная ссылка', max_length=300)
    short_url = models.SlugField('Сокращенная ссылка', max_length=50, unique=True)
    title = models.CharField('Название для ссылки', max_length=80)

    def __str__(self):
        return self.title

поле short_url имеет unique=True

views.py

    from django.shortcuts import render, redirect
from django.views.generic import ListView
from .models import Links
from .forms import AddLinkForm

def links(request):
    return render(request, 'main/main_page.html')


class LinksList(ListView):
    model = Links
    template_name = 'links/links.html'
    ordering = ['-id']

    def get_context_data(self, *, object_list=None, **kwargs):
        ctx = super(LinksList, self).get_context_data(**kwargs)
        user = self.request.user
        links = Links.objects.filter(user=user)
        form = AddLinkForm
        ctx['form'] = form
        ctx['links'] = links
        return ctx

    def post(self, request, *agrs, **kwargs):

        post = request.POST.copy()
        post['user'] = request.user
        request.POST = post

        form = AddLinkForm(request.POST)

        if form.is_valid():
            form.save()

        return redirect('links')

я пытаюсь использовать is_valid, но при тестировании форма позволяет мне вводить не одно слово, я нажимаю добавить его, но страница перезагружается. Это должно работать, но я не могу понять, что не так

forms.py

from django import forms
from .models import Links


class AddLinkForm(forms.ModelForm):

    long_url = forms.CharField(
        required=True,
        label='Длинная ссылка',
        widget=forms.TextInput(attrs={'placeholder': 'Введите длинную ссылку'})
    )

    short_url = forms.SlugField(
        required=True,
        label='Сокращенная ссылка',
        widget=forms.TextInput(attrs={'placeholder': 'Введите сокращенную ссылку'})
    )

    title = forms.CharField(
        required=True,
        label='Введти название для вашей ссылки',
        widget=forms.TextInput(attrs={'placeholder': 'Введите название здя вашей ссылки'})
    )

    class Meta:
        model = Links
        fields = ['user', 'long_url', 'short_url', 'title']
        widgets = {'user': forms.HiddenInput()}

    def __init__(self, *args, **kwargs):
        kwargs.setdefault('label_suffix', ':')
        super(AddLinkForm, self).__init__(*args, **kwargs)

почему не работает?

Вернуться на верх