我用来通过ORM来做Django查询,但我得到的代码使用了所有的SQL。基本的SQL功能
对于在日期范围内定义的特定代理,我需要能够获得总计在一起的所有交易的总金额。
cursor = connection.cursor()
cursor.execute(
"""
SELECT a.*, COUNT(t.*) as transactions
FROM agent a
JOIN transaction t ON t.agent_id = a.id
WHERE t.date_created >= %s AND t.date_created < %s and t.status in %s AND a.state = %s
GROUP BY a.id
""", [startdate, enddate, config.TX_STATUSES, selectedstate])
context['agents'] = util.raw_query_dict(cursor)
如果我用的是Django的ORM,我会使用.aggregate(Sum(...))
和聚集事务值相结合,每个代理。
我可以在SQL代码中执行此操作吗?
更新
我需要真正聚集Transaction
模型的某些字段的总和。
class Transaction(models.Model):
source_amount = MoneyField(max_digits=10, decimal_places=2, default_currency='USD')
眼下,这个SQL查询@ C14L建议给我,适用于某一特定代理的时间框架之间的交易总数。如上所示,我需要将source_amount字段的总数相加在Transaction
模型中。我怎样才能做到这一点?
从那里跑吧!使用MyModel.objects.raw()执行原始查询是很好的,当相同的查询难以在ORM中编写时,但获取游标并调用执行Sheesh可能根本不会使用djang。无论如何要回答你的问题。用总数 – e4c5