我正在配置一个API来获取结果列表。这些条目是服装“产品”,每个产品都有几种“变体”。
我试图使用“distinct”确保查询集只返回唯一的产品列表,而不是由于许多变体而重复多次的相同产品。
过去,我使用产品的主键(id)上的distinct。然而,下面的代码没有起作用。
当我尝试使用“distinct”时,我会收到500错误。如果没有它,我就不会出错。我无法在本地测试,因为SQLite不喜欢distinct。我正在使用
我试图使用“distinct”确保查询集只返回唯一的产品列表,而不是由于许多变体而重复多次的相同产品。
过去,我使用产品的主键(id)上的distinct。然而,下面的代码没有起作用。
当我尝试使用“distinct”时,我会收到500错误。如果没有它,我就不会出错。我无法在本地测试,因为SQLite不喜欢distinct。我正在使用
class InternalListView(APIView):
renderer_classes = (JSONRenderer, )
def get(self, request, *args, **kwargs):
filters = {}
for key, value in request.GET.items():
key = key.lower()
if key in countmatch:
lookup, val = internalmatch[key](value.lower())
filters[lookup] = val
qset = (
Product.objects
.filter(**filters)
.distinct('id')
.order_by('-rating')
.values('name', 'brand', 'rating')
.annotate(
price=F('variation__price__price'),
id=F('pk'),
vari=F('variation'),
)
)
for i in qset:
i['likes'] = random.randint(500, 1000)
print qset
return Response(qset.all())
distinct()
与字段名称是PostgreSQL扩展,只有在distinct()
给出的字段也被提供给第一个order_by()
时才起作用。 - dhke