models.py 1.2 KB

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