4

我在从查询中过滤掉重复项时遇到问题。我正在使用 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)

它工作得很好,给我模型的任何领域的任何搜索词的结果。但它显示了每一次点击。因此,如果名称“Smith”在表中出现 10 次,它会给我一个包含 10 次“Smith”的数组。它应该作为一个建议工具。我读到了 distinct 并尝试使用它(如上所述),但它不起作用。

有任何想法吗?

提前致谢。

康拉德

4

1 回答 1

3

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

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

此外,您的方法非常不安全,因为您应该GET在将值传递给QuerySet. 也许使用 django 表单?

还可以在此处阅读有关distinct功能的文档

于 2012-11-15T14:02:02.940 回答