django - 有没有办法把它转换成 django orm?
问题描述
table1
即使它不存在,我也需要获取所有行table2
并将其显示为零。我得到了它,raw sql query
但在django ORM中,我得到的值仅存在于table2
. 我的 django orm的唯一区别是我使用的是内连接,而在原始 sql 查询中我使用的是左连接。有什么方法可以实现这一点,还是我应该使用原始 sql 查询?谢谢。
Django ORM:
total=ApplicantInfo.objects.select_related('source_type').values('source_type__source_type').annotate(total_count=Count('source_type'))
原始 SQL 中 DJANGO ORM 的输出:
SELECT "applicant_sourcetype"."source_type", COUNT("applicant_applicantinfo"."source_type_id") AS "total_count" FROM "applicant_applicantinfo" INNER JOIN "applicant_sourcetype" ON ("applicant_applicantinfo"."source_type_id" = "applicant_sourcetype"."id") GROUP BY "applicant_sourcetype"."source_type"
原始 SQL:
SELECT source.source_type, count(info.source_type_id) as total_counts from applicant_sourcetype as source LEFT JOIN applicant_applicantinfo as info ON source.id = info.source_type_id GROUP BY source.id
解决方案
您无法查询ApplicantInfo
是否要与它进行左连接。SourceType
改为查询:
qs = (SourceType.objects
.values('source_type')
.annotate(cnt=Count('applicantinfo'))
.values('source_type', 'cnt')
)
由于您尚未发布模型,因此您可能需要调整字段名称以使其正常工作。
推荐阅读
- javascript - 从 javascript 数组创建嵌套的未排序列表
- reactjs - 使用 react-testing-library 进行测试时,我可以手动触发状态更改吗?
- c# - Unity 2d 游戏不显示 3d 文本
- swift - Material Textfield 在设置错误文本时崩溃
- tensorflow - Tensorflow:每个班级的借据
- javascript - 将onselect值从菜单组件传递到另一个组件reactjs
- ios - 'MGLMapView?' 类型的值 设置 ClusterKit 时没有成员“clusterManager”
- binary - 在八进制数减法方面需要帮助
- uwp - 如何在 Prism 7.2 中使用 UWP NavigationView 的示例
- javascript - 是否可以检索与会者的预约回复?