Как написать queryset для получения данных из различных связанных моделей в Django?
Структура моих моделей:
PRODUCT_TYPE = (
('s', 'simple'),
('v', 'varaible')
)
class Products(models.Model):
name = models.CharField(max_length=250,null=True, blank=True,)
slug = models.SlugField(max_length=200, unique=True,null=True)
product_type = models.CharField(choices=PRODUCT_TYPE, default='simple', max_length=50)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
is_published =models.BooleanField(default=False)
class ProductAttribute(models.Model):
product = models.ForeignKey(Products,on_delete=models.CASCADE, related_name='attributes', default=None)
attributes = models.ForeignKey(Attributes,on_delete=models.CASCADE, related_name='attributes', default=None)
values = models.ForeignKey(AttributeTerms, on_delete=models.CASCADE, related_name='attributes', default=None)
class ProductVariant(models.Model):
product = models.ForeignKey(Products,on_delete=models.CASCADE)
variant = models.ForeignKey(ProductAttribute,on_delete=models.CASCADE, null = True, default=None)
stock = models.IntegerField(default=None)
stock_threshold = models.IntegerField()
price = models.DecimalField(max_digits=10, decimal_places=2)
sku = models.CharField(max_length= 250, default=None)
sale_price = models.DecimalField(max_digits=10, decimal_places=2)
sale_start_date=models.DateField(auto_now_add=False, auto_now=False)
sale_end_date=models.DateField(auto_now_add=False, auto_now=False)
Чего я хочу достичь:
Если тип_продукта - varaibale и если продукт имеет более одной вариации, получите минимальную и максимальную цену и покажите в диапазоне (как показано на прикрепленном изображении0
).Если у товара есть цена продажи, получить наименьшую цену продажи и получить обычную цену того же варианта, имеющего наименьшую цену продажи.
если тип товара простой, если sale_price не none, показать обычную цену и sale_price иначе показать обычную цену
если у товара есть цена_продажи и если дата начала продажи меньше сегодняшнего дня, и если дата окончания распродажи больше или равна сегодняшнему дню, получить sale_end_date
И покажите в шаблоне в формате, как показано на изображении.
Любая помощь будет высоко оценена.
Спасибо