我在从查询中过滤掉重复项时遇到问题。 我正在使用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次“史密斯”的数组。 它应该作为一个建议工具。我阅读了不同的内容并尝试使用它(如上所述),但它不起作用。
有什么想法吗?
提前致谢。
康拉德
答案 0 :(得分:1)
将字段名称传递给distinct
函数:
model_results = teilnehmer.objects.filter(**{filter: term}).order_by().distinct(field)
此外,您的方法非常不安全,因为您应该在将GET
值传递给QuerySet
之前对其进行验证。使用django表格可能吗?
另请阅读有关distinct
函数here