我有一个带有字段的表:
No. | name | utc_date | utc_time |
------------------------------------
1 | John | 181014 | 140104.12 |
2 | Mark | 181014 | 152312.01 |
3 | Kim | 181015 | 092345.23 |
4 | Jane | 181015 | 234543.32 |
如何创建像这样的Django ORM查询??
(utc_date >= 181014, utc_time >=150000.00) AND (utc_date <= 181015, utc_time <= 150000.00 )
*我尝试制作如下所示的图片,但这不起作用:
MyTable.objects.filter(utc_date__gte=181014,
utc_date__lte=181015,
utc_time__gte=150000.00,
utc_time__lte=150000.00)
答案 0 :(得分:0)
对于多个过滤器,请使用Q
objects。
您的情况应该看起来像
from django.db.models import Q
MyTable.objects.filter(Q(utc_date__gte=181014) &
Q(utc_date__lte=181015) &
Q(utc_time__gte=150000.00) &
Q(utc_time__lte=150000.00))
答案 1 :(得分:0)
我想您将datetime与datefield和timefield分开,名称分别为utc_date和utc_time,您希望过滤日期时间范围内的数据,就像这样:
# first get data in date range:
data = MyTable.objects.filter(utc_date__gte=181014, utc_date__lte=181015)
# second exclude other
data1 = data.exclude(utc_date=181014, utc_time__lt=150000.00)
data2 = data1.exclude(utc_date=181015, utc_time__gt=150000.00)
data2是您所需要的。
主要思想是,如果我想获取2018-10-14 15:00
〜2018-10-15 15:00
中的数据,我获取2018-10-14 00:00
〜2018-10-15 24:00
中的所有数据,然后删除{{1}中的数据}〜2018-10-14 00:00
和2018-10-14 15:00
〜2018-10-15 15:00
答案 2 :(得分:0)