0

我有一个这样的查询:

last_orders = PsSiparis.objects.filter(kullanici = request.user).order_by("-id")[:4]
for order in last_orders:
    print order.restoran

它输出:

Bafra Pide 
Bafra Pide 
Deneme Restoran 
Bafra Pide

我想使用 distinct() 属性,所以我的列表将如下所示:

Bafra Pide
Deneme Restoran

但我找不到路。任何帮助将不胜感激。

4

3 回答 3

3

您应该使用 a set,它将删除重复项:

>>> l = ['Bafra Pide','Bafra Pide','Deneme Restoran','Bafra Pide']
>>> s = set(l)
>>> for i in s:
...    print i
...
Bafra Pide
Deneme Restoran

您应该将各个名称而不是实际对象添加到列表中。

于 2012-06-30T15:49:33.943 回答
1

您不能调用.distinct()切片查询,因为没有简单的方法可以生成适当的 SQL 查询。您将需要使用set等进行后处理。

于 2012-06-29T20:25:12.763 回答
0

Django 提供了一种选择查询结果不相等的方法。看看: Django 文档,distinct()

版本:另外,限制一个查询集返回一个查询集,所以你不会有问题,我建议在应用 distinc() 方法后切片。限制查询集

于 2012-06-30T00:38:19.660 回答