Имеются модели:
class Brand(models.Model):
title = models.CharField(max_length=100, verbose_name="Название")
class Category(models.Model):
title = models.CharField(max_length=100, verbose_name="Название")
class Product(models.Model):
category = models.ForeignKey(Category, on_delete=models.PROTECT, verbose_name='Категория')
brand = models.ForeignKey(Brand, on_delete=models.PROTECT, default=1, verbose_name='Бренд')
title = models.CharField(max_length=100, verbose_name='Название')
Создаю два бренда. Создаю пару категорий. В одной категории изделия от одного бренда. В другой категории - изделия от разных брендов.
Юзер заходит в каталог и выбирает категорию 1. Т.к. в ней изделия из одного бренда, то он сразу получает список изделий, т.е. он сразу будет перенаправлен на шаблон category_detail.html
Так же юзер заходит в каталог и выбирает категорию 2. И т.к. в ней изделия разных брендов, то его отправляет на другой шаблон, где он сначала должен выбрать бренд, т.е. ему подсовывают шаблон category_brands.html
Вопрос 1. Как этот момент отловить? (ну т.е. как во вьюхе перед шаблоном узнать сколько брендов у изделий в выбранной категории)
Вопрос 2: Так же заказчик хочет в админке на странице категории со списком изделий похожий момент (т.е. если бренд один, то в таблице вообще убрать колонку с брендами, а если у изделий, брендов больше чем 1, то тогда писать название бренда)
p.s. Делал что-то подобное когда-то (по второму вопросу). Помню, что-то там с Сount и annotate можно замутить, но подробностей не могу найти. Ребята помогите, в голове крутится, а по факту сделал это:
def category_list(request):
list_ = Category.objects.annotate(brand_count=Count('product__brand'))
Но оно считает количество изделий, а не брендов.