Как получить другие данные поля при использовании значений и аннотировать группу в Django - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу получить 1 товар для каждого product_type_id для определенных c брендов. Итак, я написал этот запрос, он возвращает правильный вывод, но в моей модели продукта есть несколько других полей, таких как product_name, product_info, et c, которые недоступны, почему? он возвращает только product_type_id & price.

plans_data = Product.objects.filter(brand__brand_id = brand_data_1.brand_id).values('product_type_id').annotate(min_brand_price=Min('product_price'))

1 Ответ

1 голос
/ 29 февраля 2020

Я думаю, что вы могли бы достичь своей цели в два этапа,

  1. использовать свой запрос, но добавить идентификатор продукта
  2. фильтровать продукты с помощью оператора in по всем идентификаторам продуктов шага 1

Примерно так:

plans_id = Product.objects.filter(brand__brand_id = brand_data_1.brand_id).values('product_type_id').annotate(min_brand_price=Min('product_price'), min_id=Min('product_id'))
plans_data = Product.objects.filter(product_id__in=[plan_id['min_id'] for plan_id in plans_id])

Вот несколько примеров объединения аннотаций Django Документы - выражения

...