【发布时间】:2020-06-26 02:46:03
【问题描述】:
我有两张表,一张是品牌,另一张是产品,现在产品有 1 个外国品牌 ID。
1 个品牌有多种价格不同的产品。
现在,问题是我只想为每个品牌获取 1 件产品,不超过 1 件,并且 1 件产品是根据最低价格获取的。 如何在 Django ORM 中实现它?
注意:如果一个品牌没有产品,那么该品牌不应该获取!
在这里,我尝试过但效果不佳。
def price_chart(request, category_slug):
labels = []
price_data = []
price_analysis_data = Product.objects.filter(brand__category__category_slug = category_slug).values('brand__brand_name').annotate(
Min('product_price')
).order_by('-product_price')
for data in price_analysis_data:
labels.append(data['brand__brand_name'])
price_data.append(data['product_price'])
return JsonResponse(data={
'labels': labels,
'price_data': price_data,
})
请给我一个好的解决方案!
【问题讨论】:
-
您使用的是哪个数据库?
-
@AKS Mysql 数据库
-
有一个使用
distinct(*fields)的解决方案,它只适用于 postgres。它没有 Mysql 的替代品。 -
哦,那没有办法解决这个问题?
-
有一些技巧可以应用。另一个问题,在视图中,您将标签和价格作为单独的数组返回。你不需要这两者之间的关系吗?
标签: django django-models django-views django-orm