| 1234567891011121314151617181920212223242526272829 |
- from pytils.translit import slugify
- from django import forms
- from django.core.exceptions import ValidationError
- from .models import Note
- WARNING = ' - такой slug уже существует, придумайте уникальное значение!'
- class NoteForm(forms.ModelForm):
- """Форма для создания или обновления заметки."""
- class Meta:
- model = Note
- fields = ('title', 'text', 'slug')
- def clean_slug(self):
- """Обрабатывает случай, если slug не уникален."""
- cleaned_data = super().clean()
- slug = cleaned_data.get('slug')
- if not slug:
- title = cleaned_data.get('title')
- slug = slugify(title)[:100]
- if Note.objects.filter(
- slug=slug
- ).exclude(id=self.instance.pk).exists():
- raise ValidationError(slug + WARNING)
- return slug
|