4

クエリから重複を除外する際に問題があります。Postgres 8.4.13でDjango 1.4を使用しています

モデル オブジェクトでこのクエリを使用します (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 回ある場合、「Smith」が 10 回含まれる配列が得られます。提案ツールとして機能するはずです。私は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 に答える