【发布时间】:2018-06-11 15:55:45
【问题描述】:
我正在尝试使用 Django 2.0 ORM 来完成此任务,但如果您可以使用原始 SQL 查询来解决此问题,那也会很有帮助。
例如,我有一个包含“destination”列的表格,它始终是一个城市的名称,例如“Los Angeles”、“New York”、“San Francisco”或“Seattle”(但我们事先不知道会有多少个不同的城市)。
我需要一个 SQL 查询(或 Django ORM 代码)来获取指定日期范围内所有城市的计数,按记录的周分组(基于 created_at 时间戳,周从星期一开始)。
这是一个Django模型的例子(很简单):
from django.db import models
from django.utils import timezone
class Package(models.Model):
id = models.AutoField(serialize=False, primary_key=True)
name = models.CharField(max_length=64)
email = models.CharField(max_length=128, unique=True)
phone = models.CharField(max_length=32)
destination = models.CharField(max_length=64)
created_at = models.DateField(db_index=True, default=timezone.now)
updated_at = models.DateField(default=timezone.now)
这是所需输出的示例,结构为 JSON:
{
"2017-06-05-2017-06-11": {
"Los Angeles": 100,
"New York": 50,
"Copenhagen": 20
},
"2017-06-12-2017-06-18": {
"Los Angeles": 10,
"Toronto": 23,
"Las Vegas": 21,
"Carson City": 8,
"Raleigh": 1
},
"2017-06-19-2017-06-25": {
"Toronto": 24,
"Tokyo": 75,
"Kansas City": 123,
"Salem": 84,
"Bismarck": 22,
"Boise": 77,
"Las Vegas": 123
}
}
请注意,结果的大小可能会有所不同,日期范围都从星期一开始,到星期日结束(包括两者),并且城市名称是可变的且未知的。
我知道有一些方法可以将其构建到 Python 逻辑中并执行许多查询,但我希望我们可以在单个查询中完成此操作。谢谢!
【问题讨论】:
-
可以展示模型吗?
-
是的,输入也很有趣
标签: python mysql sql django django-orm