これは、奇妙なSQLクエリのようなものです。 1つのステートメントでそれを実行することさえ可能かどうかはわかりません。
は、私たちは、このサブクエリを見てみましょう: SELECT MIN(date(date_time)) as date_time,user_id_id FROM "pied_visit" WHERE branch_id_id IN (5,6,9) GROUP BY user_id_id) user_min
私の知る限りでは、それは外側のクエリで機能するためにエイリアスが唯一重要ですので、もし、ジャンゴで表の別名を提供する方法はありません、そしてPiedVisit
は、SQLテーブルpied_visit
のためのDjangoのモデル名であるならば、我々はそうのようにそれを得ることができます:TruncDate
は下のバージョンでは使用できないので
p = PiedVisit.objects.values('user_id_id').annotate(new_date_time=Min(TruncDate(date_time)).filter(branch_id_id__in=[5,6,9])
上記の例をのみ、上記ジャンゴ1.10で動作します。 .extra()
クエリーセットAPIを使用し、古いバージョンのSQLを挿入する必要があります。
前のステートメントの結果が何であっても、リストの補完とコレクションを使用してPythonで処理するだけです。
from collections import Counter
c = Counter([row['new_date_time'] for row in p])
dict(c)
あなたは、キー日付があるdict
で終わるだろう、とそれぞれの値は、カウントされます。
TruncDateおよびextra()に関するドキュメント。
生のSQLクエリをORMに変換する代わりに使用することを検討してみませんか? https://docs.djangoproject.com/en/1.10/topics/db/sql/# –
私はそれを使うことができます。しかし、このクエリをORMに変換する方法を学びたいと思います。 –
非常に簡単です。シンタックスとその結果を操作する方法については、ドキュメントに従ってください。 –