Условное выражение в Джанго 1.11 - PullRequest
0 голосов
/ 24 апреля 2018

У меня 3 модели: Product, Brand, Shop.Я хочу сосчитать Products, которые доступны для Brands в данном Shop.
Например:
Adidas 50
Puma 25

Теперь у меня есть:

queryset = Brand.objects
            .filter(brand_id__in=id_list)
            .order_by('brand_name')

queryset =  queryset.annotate(amount_of_products=Count('products'))

Но это дает мне количество продуктов из всех магазинов.

Я пробовал как здесь :

queryset = queryset.annotate(
            amount_of_products=Count(
                Case(When(shops__shop_name__in=[shop], then=1))
            ))

Но я получаю amount_of_products = 1 за каждый Brand в списке.
Есть ли способ сделать это условное выражение в Django 1.11?

1 Ответ

0 голосов
/ 24 апреля 2018

На самом деле удалось это исправить :)

queryset = queryset.annotate(
            amount_of_products=Count(
                Case(When(products__shop__shop_name__in=[shop], then=1))
            ))

Это было просто неправильно ForeignKey использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...