17
Янв
2022

Django. Как сделать проверку на уникальность поля в форме?

Код в views.py:

def add_ads(request):
    form_add_ads = AdvertisementForm
    if request.method == 'POST':
        form_add = AdvertisementForm(request.POST)
        if form_add.is_valid:
            form_add.save(commit=False)
            form_add.instance.author = request.user
            form_add.instance.slug = get_slug(form_add.instance.title)
            form_add.save()
            return redirect('/ads/')
        else:
            form_add_ads = AdvertisementForm()

    return render(request, 'ads/add_ads.html', {'form_add_ads': form_add_ads})```

Код в models.py:
```class Advertisement(models.Model):
    title = models.CharField(
        'Название объявления (должно быть уникальным, макс. символом 100)',
        max_length=100, unique=True)
    content = models.TextField('Описание объявления')
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    publish = models.DateTimeField(auto_now_add=True)
    category = models.ForeignKey('Category', on_delete=models.CASCADE)
    slug = models.SlugField(max_length=100, unique=True)

    class Meta:
        verbose_name = 'Объявление'
        verbose_name_plural = 'Объявления'
        ordering = ['publish']

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('ads_detail', args=[self.publish.year,
                                           self.publish.month,
                                           self.publish.day,
                                           self.slug])``` 
Код в forms.py:
```class AdvertisementForm(forms.ModelForm):
    class Meta:
        model = Advertisement
        fields = ('title', 'content', 'category')```


Суть вопроса: что мне добавить во въюху, 
дабы проверить является ли заголовок уникальным? 
Пробовал разными способами, в основном костыльными, ничего не работает.
Сама въюха добавляет статью в базу данных на основе формы, которая в свою очередь создана на основе модели.
На данный момент при попытке создать объявления с неуникальным заголовком возникает закономерная ошибка:
[![ValueError at /ads/add_ads/][1]][1]


  [1]: https://i.stack.imgur.com/TjwxK.png

PS: только начал учить django(2 недели), буду благодарен за любые замечания в коде.

Источник: https://ru.stackoverflow.com/questions/1372480/django-%D0%9A%D0%B0%D0%BA-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D1%83-%D0%BD%D0%B0-%D1%83%D0%BD%D0%B8%D0%BA%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D0%BF%D0%BE%D0%BB%D1%8F-%D0%B2-%D1%84%D0%BE%D1%80%D0%BC%D0%B5

Тебе может это понравится...

Добавить комментарий