Всем доброго здоровья.
Существует две модели:
class Category(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(blank=True)
def __str__(self):
return self.name
class Product(models.Model):
category = models.ForeignKey(Category, on_delete=models.PROTECT)
title = models.CharField(max_length=120)
slug = models.SlugField(blank=True)
description = models.TextField()
price = models.DecimalField(max_digits=9, decimal_places=2)
available = models.BooleanField(default=True)
def __str__(self):
return self.title
Вводная 1:
Категорий много. В каждой из них какая-то группа товаров. От 0 до 100. Это значит, что некоторые категории пустые ибо в них нет товаров.
Вопрос: Как во views.py выполнить запрос на список категорий, только тех в которых товары есть. Какой-нибудь хитрый count > 0 где-то в фильтр вставить. Я понимаю, что это сложный запрос SQL, но есть ли такая возможность средствами Django или нет? Или может быть нужно несколько запросов делать, но тогда как? (напишите код пожалуйста).
Вводная 2: Всё тоже самое. Только в модели Products есть ещё и количество
qty = models.IntegerField(default=0)
Вопрос 2: Как во views.py выполнить запрос (запросы) на список категорий, только тех в которых есть те товары, количество которых больше 0. Есть ли такая возможность реализации простыми средствами Django или нет? Или может быть нужно несколько запросов делать, но тогда как? (напишите код пожалуйста).
p.s. Полученный список будет передаваться через context в шаблон и использоваться в for. Нужны будут оба значения модели (category.title и category.slug).
p.s.2. У меня slug заполняется автоматически, если его нет, поэтому там blank=True (в общем не заморачивайтесь и не отвлекайтесь на это)
С уважением!