model_note.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. """Модель примечания."""
  2. from django.conf import settings
  3. from django.db import models
  4. from pytils.translit import slugify
  5. class ModelNote(models.Model):
  6. """Примечание на странице."""
  7. title = models.CharField(
  8. 'Заголовок',
  9. max_length=100,
  10. default='Название заметки',
  11. help_text='Дайте короткое название заметке'
  12. )
  13. text = models.TextField(
  14. 'Текст',
  15. help_text='Добавьте подробностей'
  16. )
  17. slug = models.SlugField(
  18. 'Адрес для страницы с заметкой',
  19. max_length=100,
  20. unique=True,
  21. blank=True,
  22. help_text=('Укажите адрес для страницы заметки. Используйте только '
  23. 'латиницу, цифры, дефисы и знаки подчёркивания')
  24. )
  25. author = models.ForeignKey(
  26. settings.AUTH_USER_MODEL,
  27. on_delete=models.CASCADE,
  28. )
  29. def __str__(self):
  30. """Строковое представление страницы."""
  31. return self.title
  32. def save(self, *args, **kwargs) -> None:
  33. """Сохраняет примечание в БД."""
  34. if not self.slug:
  35. max_slug_length = self._meta.get_field('slug').max_length
  36. self.slug = slugify(self.title)[:max_slug_length]
  37. super().save(*args, **kwargs)