models.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # Copyright © 2023 Ingram Micro Inc. All rights reserved.
  2. from django.contrib.auth.models import AbstractUser
  3. from django.db import models
  4. from dj_cqrs.mixins import MasterMixin
  5. class User(MasterMixin, AbstractUser):
  6. CQRS_ID = 'user'
  7. CQRS_PRODUCE = True
  8. class ProductType(models.Model):
  9. name = models.CharField(max_length=50)
  10. class Product(MasterMixin, models.Model):
  11. CQRS_ID = 'product'
  12. CQRS_SERIALIZER = 'app.serializers.ProductSerializer'
  13. name = models.CharField(max_length=50)
  14. product_type = models.ForeignKey(ProductType, on_delete=models.CASCADE)
  15. @classmethod
  16. def relate_cqrs_serialization(cls, queryset):
  17. return queryset.select_related('product_type')
  18. class Purchase(MasterMixin, models.Model):
  19. CQRS_ID = 'purchase'
  20. CQRS_SERIALIZER = 'app.serializers.PurchaseSerializer'
  21. user = models.ForeignKey(User, on_delete=models.CASCADE)
  22. product = models.ForeignKey(Product, on_delete=models.CASCADE)
  23. action_time = models.DateTimeField(auto_now_add=True)
  24. @classmethod
  25. def relate_cqrs_serialization(cls, queryset):
  26. return queryset.select_related('product', 'product__product_type')