2012-11-15 76 views
3

我有一個問題,從查詢中濾除重複。 我使用Django 1.4的Postgres 8.4.13Django獨特不起作用

我用這個查詢我的模型對象(它是一個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

通行證字段名distinct功能:

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

而且你的做法是非常不安全的,因爲你應該將它們傳遞給QuerySet之前驗證GET值。可能使用django表單?

而且閱讀文檔有關distinct功能here

+0

感謝您的答覆。它現在有效。 我現在將實現GET驗證。不幸的是,Django表單在這裏不是選項,因爲它是一個非常複雜的搜索表單,可能會在django表單中做很多工作。 但是再次感謝! – Conrad