[英]Django distinct not working with Postgres
我正在配置一個API以提取結果列表。 這些項目是服裝“產品”,具有多個“變體”。
我正在嘗試使用distinct確保查詢集僅返回唯一產品列表,而不是由於許多變化而多次重復同一產品。
過去,我在產品的主鍵(id)上使用了distinct。 但是,以下代碼不起作用。
嘗試使用“ distinct”時出現500錯誤。 沒有它,我不會出錯。 我不能在本地測試,因為SQLite不喜歡與眾不同。 我在用
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())
啊,只是想通了。
根據django docs( https://docs.djangoproject.com/en/1.9/ref/models/querysets/#distinct )
兩者和&order_by必須相同。
因此,這不起作用:
.distinct('id')
.order_by('-rating')
但這將起作用:
.distinct('id')
.order_by('id')
這最有效:
.distinct('rating', 'id')
.order_by('-rating')
使用選項3有什么問題嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.