【发布时间】:2017-09-07 00:31:06
【问题描述】:
我有一个名为Event 的模型,它有一个start 和stop 字段,两者都是DateTimeField 类型。我想过滤掉 start 和 stop 字段为空的事件。
使用这两个查询,我得到 2 个查询集:
tempset = Event.objects.filter(site__slug='test-site', owner__email='bill@email.com')
tempset2 = Event.objects.filter(site__slug='test-site', invite__slug='bill-compton')
我尝试过这样的联合:
tempset.union(tempset2)
还有这样的:
tempset = Event.objects.filter(site__slug='test-site', owner__email='bill@email.com').union(Event.objects.filter(site__slug='test-site', invite__slug='bill-compton'))
但是当我尝试过滤时,使用以下语法:
filtered_query = tempset.filter(start__isnull=False, stop__isnull=False)
然后打印出起始值和终止值,
for thing in filtered_query:
print(thing.start, thing.stop)
我得到这个输出:
None None
2017-09-01 11:00:25+00:00 None
2017-09-03 11:00:00+00:00 2017-09-03 12:00:00+00:00
2017-09-06 11:00:00+00:00 2017-09-06 12:00:00+00:00
2017-09-06 11:00:54+00:00 2017-09-06 12:00:54+00:00
2017-09-06 11:00:07+00:00 2017-09-06 12:00:07+00:00
注意:
如果我使用| 字符来合并两个查询集,则此过滤查询可以正常工作。我的理解是 .union() 将允许这种合并行为。
有什么想法吗?
【问题讨论】:
标签: django python-3.x django-models