Django distinct不起作用

时间:2012-11-15 13:54:52

标签: django postgresql duplicates distinct

我在从查询中过滤掉重复项时遇到问题。 我正在使用Django 1.4和Postgres 8.4.13

我在我的模型对象上使用此查询(它是一个jquery自动完成)

term = request.GET.get('term')
field = request.GET.get('field') 
filter = field + '__' + 'icontains'
model_results = teilnehmer.objects.filter(**{filter: term}).order_by().distinct()
results = [ getattr(x, field) for x in model_results ]
output = simplejson.dumps(results)

它很好用,可以为模型的任何字段中的任何搜索词提供结果。 但它显示了每一次打击。因此,如果名称“史密斯”在表中10次,它给我一个10次“史密斯”的数组。 它应该作为一个建议工具。我阅读了不同的内容并尝试使用它(如上所述),但它不起作用。

有什么想法吗?

提前致谢。

康拉德

1 个答案:

答案 0 :(得分:1)

将字段名称传递给distinct函数:

model_results = teilnehmer.objects.filter(**{filter: term}).order_by().distinct(field)

此外,您的方法非常不安全,因为您应该在将GET值传递给QuerySet之前对其进行验证。使用django表格可能吗?

另请阅读有关distinct函数here

的文档