繁体   English   中英

如何将 SQL 查询转换为 django ORM

[英]How can I translate SQL query to to django ORM

我正在 Django 中进行一些数据咨询,但我还不太了解它的 ORM 系统。 我需要获取特定交易预测的交易数量。 简而言之,我想将此 SQL 查询转换为 Python/Django 语法:

select cp.name, count(*) as total
from core_transaction ct 
inner join core_projection cp 
on ct.projection_id = cp.id
group by cp.name

这些是涉及的模型:

class Transaction(models.Model):
    date = models.DateField()
    projection = models.ForeignKey('Projection', blank=False, null=False, related_name='transactions')

class Projection(models.Model):
    name = models.CharField(max_length=150)
    description = models.CharField(max_length=300, blank=True, null=True)

您可以使用 [ .annotate(…)子句 [Django-doc]] 执行此操作:

from django.db.models import Count

Projection.objects.annotate(
    total=Count('transactions')
)

从此查询集产生的Projection对象将有一个额外的属性.total ,其中包含Transaction的数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM