JawsIk
@JawsIk
Python Django, Lua, ЧПУ-станки(ArtCam, Aspire)

Django: Как узнать в категории количество брендов у товаров этой категории?

Имеются модели:
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'))

Но оно считает количество изделий, а не брендов.
  • Вопрос задан
  • 53 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы