Здравствуйте! Как в django ORM сделать запрос на подобии.
Select Product.title, Discount.discount from Product
Left join (Select * from Discount where user=1) on Product.id = Discount.product_id
where Product.catedory_id = 28
Пробую так
context = Product.objects.filter(category_id=id,
product_price__price_type__roznica_default=True).values('id',
'code',
'title',
'product_price__cost',
'product_discount__discount')
Данные выводятся, но из за того что соединение идет через INNER JOIN, то данные дублируются.
class Product(models.Model):
category = TreeForeignKey(Category, on_delete=models.CASCADE, null=True, blank=True, related_name='products', verbose_name='Категория')
code = models.CharField('Код', max_length=20, unique=True, db_index=True)
article = models.CharField('Артикул', max_length=50, blank=True, db_index=True)
title = models.CharField('Наименование', max_length=200, db_index=True)
image = models.ImageField('Изображение товара', upload_to='products/', blank=True)
class Discount(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_discount', verbose_name='Имя клиента')
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='product_discount', verbose_name='Продукт')
discount = models.FloatField('Скидка %')
class Price_type(models.Model):
code = models.CharField('Код', max_length=20, unique=True)
title = models.CharField('Наименование', max_length=50)
roznica_default = models.BooleanField('Для розничной торговли', default=False)
optovaya_default = models.BooleanField('Для оптовой торговли', default=False)
class Price(models.Model):
price_type = models.ForeignKey(Price_type, on_delete=models.CASCADE, related_name='price', verbose_name='Тип цены')
product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='product_price', verbose_name='Продукт')
cost = models.FloatField('Цена')