forms.py 945 B

1234567891011121314151617181920212223242526272829
  1. from pytils.translit import slugify
  2. from django import forms
  3. from django.core.exceptions import ValidationError
  4. from .models import Note
  5. WARNING = ' - такой slug уже существует, придумайте уникальное значение!'
  6. class NoteForm(forms.ModelForm):
  7. """Форма для создания или обновления заметки."""
  8. class Meta:
  9. model = Note
  10. fields = ('title', 'text', 'slug')
  11. def clean_slug(self):
  12. """Обрабатывает случай, если slug не уникален."""
  13. cleaned_data = super().clean()
  14. slug = cleaned_data.get('slug')
  15. if not slug:
  16. title = cleaned_data.get('title')
  17. slug = slugify(title)[:100]
  18. if Note.objects.filter(
  19. slug=slug
  20. ).exclude(id=self.instance.pk).exists():
  21. raise ValidationError(slug + WARNING)
  22. return slug