【问题标题】:How can I translate SQL query to to django ORM如何将 SQL 查询转换为 django ORM
【发布时间】:2020-10-24 23:52:56
【问题描述】:

我正在 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)

【问题讨论】:

  • 你不能。例如.filter() .exclude Q object 有相同的结果

标签: python sql django


【解决方案1】:

您可以使用 [.annotate(…) 子句 [Django-doc]]:

from django.db.models import Count

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

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

【讨论】:

    猜你喜欢
    • 2019-10-17
    • 2016-04-20
    • 2020-09-12
    • 1970-01-01
    • 2021-07-06
    • 2022-08-18
    • 2019-06-11
    • 2018-06-10
    相关资源
    最近更新 更多