私は明確な外部キーのリストを取得しようと、私はこれを書いた取得:Djangoのモデル - 個別の値リスト
my_ids = Entity.objects.values('foreign_key').distinct()
をしかし、私はUNDISTINCT外部キーだけのリストを取得...私は何をしないのですか?
ありがとうございます!
私は明確な外部キーのリストを取得しようと、私はこれを書いた取得:Djangoのモデル - 個別の値リスト
my_ids = Entity.objects.values('foreign_key').distinct()
をしかし、私はUNDISTINCT外部キーだけのリストを取得...私は何をしないのですか?
ありがとうございます!
これはヒントです!
:この1つは、単に一つのオブジェクトを働き、リターン(私の知る限り)をどちらのソリューションは、文句を言わない、100%の仕事...しかし、私は一種のそれらを組み合わせた:)
のMySQL-データベースに対して明確なdoesntの仕事に引数を渡します
Entity.objects.order_by('foreign_key').values('foreign_key').distinct()
しかし、おかげでとにかく:)
おそらく、あなたはこれで行きたいかもしれません:
Entity.objects.order_by().values_list('foreign_key', flat=True).distinct()
WRONG。 order_by( 'foregin_key')なしで使用すると動作しません。例えばM2M(postgres、django 1.8)の – andi
Entity.objects.order_by('foreign_key').distinct('foreign_key')
をすでにリストとしてそれらを持っている場合は、個別の値を取得するためにset()
に変換します。
ではset()と同じようにメモリに関してはコストがかかりますが、すべてがメモリに格納されますが、クエリセットとしては評価されるまでロードされません。リストのものはクエリーセットを評価するでしょうか? –
Entity.objects.values_list('foreign_key', flat=True).distinct().order_by()
によって実行順序で動作していない明確な
order_by()呼び出しで使用されるフィールドはすべて、SQL SELECT 列に含まれています。これにより、distinct()と の組み合わせで使用すると、予期しない結果になることがあります。関連する モデルのフィールドで注文した場合、それらのフィールドは選択された列に追加され、 とすると、重複する行が区別されて表示されます。余分な 列は返された結果に表示されないため( のサポート注文にのみ)、ときどき が返されているように見えます。
は同様に、 は、選択した列を制限するためにあなたが値を使用している場合()クエリ、任意のORDER_BYで使用される列()(またはデフォルトのモデル 順序は)まだ関与することになりますと 結果の一意性に影響を与える可能性があります。
distinct()を使用している場合は、関連するモデルで の注文に注意してください。同様に、distinct()と values()を一緒に使用する場合は、 values()コールに含まれていないフィールドで並べ替えるときは注意が必要です。
https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct
もう少し詳しく教えていただけますか?この質問の投票率を考えると、これは多くの人々の問題です。それを言うあなたの源は何ですか? –
私はほとんど私の心を失った。このソリューションをありがとう! – Crystal
私は同じ問題をPostgres9.1データベースで持っています、Django == 1.5.5。追加order_by助けられた - 愚かな... – kev