Python 使用Django ORM在Select中选择

Python 使用Django ORM在Select中选择,python,django,select,orm,Python,Django,Select,Orm,在何处可以找到有关生成如下查询的信息: select SomeField1, (select count(distinct SomeField2) from SomeTable where SomeCondition) as SomeField3 from SomeTable2 where SomeCondition2 使用Django ORM?它可能在Django文档中的某个地方,但我找不到它。Django的ORM旨在根据每个模型及其关系数据(即ForeignKey、Many

在何处可以找到有关生成如下查询的信息:

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

使用Django ORM?它可能在Django文档中的某个地方,但我找不到它。

Django的ORM旨在根据每个模型及其关系数据(即ForeignKey、ManyToManyRelationship等)执行查询。您的示例显示,您需要同时从两个不相关的模型获得两个结果。好吧,除了分开做之外,没有别的办法

count = SomeTable.objects.filter(SomeCondition).distinct(SomeField2).count()
somefield1 = SomeTable2.objects.filter(SomeCondition2)
但是,如果您确实需要,有几种方法可以实现,但我不推荐:


你们两张桌子的关系是什么

我想你需要计数,有一段代码没有检查

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

有关更多详细信息,请参阅和。

因为您的问题特别是在哪里可以找到这些信息,请查看-它应该可以帮助您实现您在这里尝试的一些功能(特别是计数)

然而,一起查询不相关的表并不常见。您最好进行单独的查询并手动将返回的数据关联在一起,因为您的数据库将拆分该查询

在您的情况下,如果您必须运行该查询,我建议您使用数据库