首页 > 解决方案 > 如何在 django orm 上制作多重过滤器?

问题描述

我有一个包含字段的表:

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)

标签: djangodjango-modelsdjango-ormdjango-filters

解决方案


对于多个过滤器,请使用Qobjects

在你的情况下,它应该看起来像

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))

推荐阅读