python - 为什么 django 日期过滤器也给我提供第二天的条目

标签 python django sqlite

我正在尝试访问一个数据库,其中有 2016,9,25 的两个条目和 2016,9,26 的两个条目,每个条目都有不同的时间...我通过使用列出每个条目来查看它们以下模板中的 task.start_time 是我得到的列表

TASK        Task.title                  duration    start_time                  project     project_color   user
1st task    This is the first task      0:02:40     Sept. 25, 2016, 11:42 p.m.  Unassigned  NO COLOR    faizank
2nd task    This is the second task     0:01:30     Sept. 25, 2016, 11:47 p.m.  Unassigned  NO COLOR    faizank
3rd task    asdasdasdasd                0:20:00     Sept. 26, 2016, 12:19 a.m.  Unassigned  NO COLOR    faizank
3rd task    this is the problem         0:20:00     Sept. 26, 2016, 12:22 a.m.  Unassigned  NO COLOR    faizank

start_time 是一个 datetime_field,现在我使用以下查询过滤 datetime 对象

>>> c= Task.objects.filter(start_time__date=datetime.date(2016,9,25)

这给了我

<QuerySet [<Task: 1st task>, <Task: 2nd task>, <Task: 3rd task>, <Task: 3rd task>]>

但是当我将日期更改为 26 时,它给了我一个空集......

我什至做到了

>>> c= Task.objects.filter(start_time__date=datetime.datetime(2016,9,25,0,0,0,0,pytz.UTC)

得到相同的结果。

那么为什么日期也返回 26 的条目......并且在查询 26 时它返回一个空集......

编辑1:

所以我刚刚发现,日期存储的是不同的时间,我不知道为什么模板不显示实际时间。因此,对于上述条目,我检查了实际时间并发现了以下内容...

>>> d= <QuerySet [<Task: 1st task>, <Task: 2nd task>, <Task: 3rd task>, <Task: 3rd task>]>
>>> d[2].start_time

并得到以下内容

datetime.datetime(2016, 9, 25, 19, 19, 59, 477000, tzinfo=<UTC>)

它清楚地表明第三个任务存储在不同的时间和模板中显示的时间,事实上我认为它距离它显示的时间(GMT)正好是 -5 小时,所以现在真正的问题这就是为什么模板对同一模型显示不同的时间......更重要的是我如何纠正它......

最佳答案

根据Django QuerySet reference for date :

When USE_TZ is True, fields are converted to the current time zone before filtering.

鉴于这两项任务都在午夜后不久发生,我怀疑转换为您设置的时区导致了您所看到的问题。

关于python - 为什么 django 日期过滤器也给我提供第二天的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39967155/

相关文章:

android - getReadableDatabase(),native_setLocale,SQLiteOpenHelper中的Android SQLiteDiskIOException

iOS:选择查询在某些设备上返回不同的结果

python - 我如何自动指定模拟的 Celery 函数

python - Django/Python requirements.txt 总是获取最近的包

django - 如何强制 Django 将默认 DecimalField 格式中的零转换为常规范式?

javascript - 为什么我的 javascript 方法没有被调用?

python - ":"在Python中做什么

python - 一维和二维数组之间的元素明智比较

python - 使用 xlwt python 合并两个以上单元格

java - SQLITE UPDATE OR INSERT 语句不想执行