models.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import django
  2. from django.contrib.auth.models import AbstractUser
  3. from django.core.exceptions import ValidationError
  4. from django.db import models
  5. from django.core.validators import FileExtensionValidator
  6. from django.urls import reverse
  7. from django.utils import timezone
  8. class Category (models.Model):
  9. name = models.CharField(max_length=100, help_text="Введите категории")
  10. def __str__(self):
  11. return self.name
  12. class CastomUser(AbstractUser):
  13. first_name = models.CharField(max_length=254, verbose_name='Имя', blank=False)
  14. last_name = models.CharField(max_length=254, verbose_name='Фамилия', blank=False)
  15. email = models.CharField(max_length=254, verbose_name='Пoчтa', blank=False)
  16. password = models.CharField(max_length=254, verbose_name='Пapoль', blank=False)
  17. role = models.CharField(max_length=254, verbose_name='Poль',
  18. choices=(('admin', 'Администратор'), ('user', 'Пoльзователь')), default='user')
  19. class Application(models.Model):
  20. title = models.CharField(max_length=200)
  21. summary = models.TextField(help_text="Опишите свою заявку ")
  22. STATUS_CHOICES = [
  23. ('N', 'Новая'),
  24. ('P', 'Принято в работу'),
  25. ('C', 'Выполнено')
  26. ]
  27. def validate_image(fieldfile_obj):
  28. filesize = fieldfile_obj.file.size
  29. megabyte_limit = 2.0
  30. if filesize > megabyte_limit * 1024 * 1024:
  31. raise ValidationError("Max file size is %sMB" % str(megabyte_limit))
  32. category = models.ForeignKey(Category, help_text='Выберите категорию', on_delete=models.CASCADE)
  33. photo_file = models.ImageField(max_length=254, upload_to='image/', validators=[validate_image, FileExtensionValidator(['jpg', 'jpeg', 'png', 'bmp'])])
  34. status = models.CharField(max_length=254, verbose_name='Статус', choices=STATUS_CHOICES, default='N')
  35. date = models.DateTimeField(verbose_name='Дата добавления', default=django.utils.timezone.now)
  36. user = models.ForeignKey(CastomUser, verbose_name='Пользователь', on_delete=models.CASCADE)
  37. def get_absolute_url(self):
  38. return reverse('application_leist', args=[str(self.id)])
  39. def __str__(self):
  40. return self.title
  41. class Product(models.Model):
  42. name = models.CharField(max_length=255)
  43. description = models.TextField()
  44. def __str__(self):
  45. return self.name