Read
モデルに関連するモデルがありますArticle
。私がやりたいのは、記事が一意で、順序付けされたクエリセットを作成することdate_added
です。私はpostgresを使用しているので、.distinct()
メソッドを使用してarticle
フィールドを指定したいと思います。そのようです:
articles = Read.objects.order_by('article', 'date_added').distinct('article')
ただし、これでは目的の効果が得られず、クエリセットが作成された順序で並べ替えられます。私は Django のドキュメントに関する注意事項を認識して.distinct()
い.order_by()
ますが、それが言及されている副作用は重複があり、それが表示されないため、ここに適用されるとは思いません。
# To actually sort by date added I end up doing this
articles = sorted(articles, key=lambda x: x.date_added, reverse=True)
これにより、実際に必要になる前にクエリ全体が実行され、多数のレコードがある場合は非常に遅くなる可能性があります。を使用して既に最適化しselect_related()
ました。
関連モデルの一意性と order_by 日付を使用してクエリを作成する、より効率的で効率的な方法はありますか?
更新 出力は、関連する記事がクエリセット内で一意であり、Django orm (つまり、python での並べ替え) のみを使用する Read インスタンスのクエリセットであることが理想的です。