python - Django 按月和年过滤

标签 python django django-models

我正在尝试按月和年过滤日期时间字段。出于某种未知原因,当同时输入月份和年份时,我返回了一个空集。

型号:

class SomePost(model.Models):
    timestamp = models.DateTimeField(auto_now_add=True)

查询:

p = SomePost.objects.filter(timestamp__year=2014, timestamp__month=1)

我认为这与月份有关,但我看不出我做错了什么。

编辑

好的,所以我将模型日期时间字段转换为日期字段并且查询有效。

生成的 sql 是这样的:

SELECT 
`a_post`.`id`, 
`a_post`.`title`, 
`a_post`.`slug`, 
`a_post`.`text`, 
`a_post`.`timestamp`, 
`a_post`.`published` FROM `a_post` 
WHERE EXTRACT(MONTH FROM `a_post`.`timestamp`) = 2
ORDER BY `a_post`.`timestamp` DESC;

但是当我将它转换回日期时间字段时,sql 是:

SELECT 
`a_post`.`id`, 
`a_post`.`title`,
`a_post`.`slug`, 
`a_post`.`text`, 
`a_post`.`timestamp`,
 `a_post`.`published` FROM `a_post` 
WHERE EXTRACT(MONTH FROM CONVERT_TZ(`a_post`.`timestamp`, 'UTC', UTC)) = 1 
ORDER BY `a_post`.`timestamp` DESC

问题似乎是由 conver_tz 引起的。如果我要在查询返回结果时删除 convert_tz 函数。

对这里发生的事情有什么想法吗?

最佳答案

我遇到了同样的问题,这对我很有效,我希望它对你有用。

Tested on Django-1.11.5

 p = SomePost.objects.filter(timestamp__year='2014').filter(timestamp__month='1')

更多信息可用here

关于python - Django 按月和年过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21286516/

相关文章:

Django 模型 - 选择与外键?

python - Django 模型继承 : Delete subclass keep superclass

python - 使用django上传时创建目录

python - 在模型级别将 Django DateField 验证为一周中的特定日期的最佳做法是什么?

python - 如何使用作为环境变量生成的 PyNaCl key

json - 如何在 Django REST Framework 中序列化 'object list'

python - 对象在 python3 中没有属性 '.__dict__'

python - Django上传csv文件复制到postgresql表

python - 如何从 DOC(而不是 DOCX)获取 XML?

python - Raspberry PI 编写 CSV Python