1

次のようなクエリの作成に関する情報はどこにありますか。

select
  SomeField1,
  (select count(distinct SomeField2) from SomeTable where SomeCondition) as SomeField3
from
  SomeTable2
where
  SomeCondition2

Django ORM を使用していますか? おそらくDjangoのドキュメントのどこかにあるのですが、見つかりません。

4

3 に答える 3

0

DjangoのORMは、モデルごとのクエリとそのリレーショナルデータ(つまり、ForeignKey、ManyToManyRelationshipなど)を実行することを目的としています。あなたの例は、2つの無関係なモデルから同時に2つの結果が必要であることを示しています。AFAIK、それを別々に行う以外にそれを行う方法はありません

count = SomeTable.objects.filter(SomeCondition).distinct(SomeField2).count()
somefield1 = SomeTable2.objects.filter(SomeCondition2)

ただし、本当に必要な場合に達成できる方法はいくつかありますが、お勧めしません。

モデル間でのDjangoクエリセット?

複数のdjangoモデルにまたがるクエリフィールド

于 2012-10-04T11:10:19.777 に答える
0

2 つのテーブルの関係は?

カウントが必要だと思います。チェックなしのコード スニペットがあります。

SomeModel2.objects.annotate(new_field=Count('SomeField2', 
    distinct=True)).filter(condition=condition,
    another_condition=condition2).values('new_field', 'Somefield1')

詳細については、 https://docs.djangoproject.com/en/dev/ref/models/querysets/#annotateおよびHow to sort by annotated Count() in a related model in Djangoを参照してください。

于 2012-10-04T11:14:53.880 に答える
0

あなたの質問は具体的にはこの情報を見つけることができる場所なので、Aggregation |を見てください。Django docs - ここで試していることの一部 (具体的にはカウント) を達成するのに役立つはずです。

ただし、関連のないテーブルを一緒にクエリすることは、まったく一般的なことではありません。データベースはとにかくそのクエリを分割するため、個別のクエリを作成し、返されたデータを手動で関連付ける方がよいでしょう。

あなたの場合、そのクエリ実行する必要がある場合は、データベースで生の SQL クエリを作成することをお勧めします。

于 2012-10-04T11:18:46.100 に答える