models.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from django.db import models
  2. class Product(models.Model):
  3. name = models.CharField(max_length=255)
  4. color = models.CharField(max_length=32, null=True)
  5. price = models.IntegerField(null=True)
  6. discounted_price = models.IntegerField(null=True)
  7. class Meta:
  8. constraints = [
  9. models.CheckConstraint(
  10. check=models.Q(price__gt=models.F('discounted_price')),
  11. name='price_gt_discounted_price',
  12. ),
  13. models.CheckConstraint(
  14. check=models.Q(price__gt=0),
  15. name='%(app_label)s_%(class)s_price_gt_0',
  16. ),
  17. models.UniqueConstraint(fields=['name', 'color'], name='name_color_uniq'),
  18. models.UniqueConstraint(
  19. fields=['name'],
  20. name='name_without_color_uniq',
  21. condition=models.Q(color__isnull=True),
  22. ),
  23. ]
  24. class AbstractModel(models.Model):
  25. age = models.IntegerField()
  26. class Meta:
  27. abstract = True
  28. constraints = [
  29. models.CheckConstraint(
  30. check=models.Q(age__gte=18),
  31. name='%(app_label)s_%(class)s_adult',
  32. ),
  33. ]
  34. class ChildModel(AbstractModel):
  35. pass