我在一个实体中有ListProperty,它包含两个时间对象,代表一个星期几的业务开放和关闭时间:
mon_hours = db.ListProperty(datetime.time)
tue_hours = db.ListProperty(datetime.time)
wed_hours = db.ListProperty(datetime.time)
thu_hours = db.ListProperty(datetime.time)
fri_hours = db.ListProperty(datetime.time)
sat_hours = db.ListProperty(datetime.time)
sun_hours = db.ListProperty(datetime.time)
当我使用当前时间AND链查询此实体时,过滤器只能正确返回列表中时间大于且小于的时间的记录,它会以0结果失败:
now = datetime.datetime.now()
q = Place.all()
q.filter('mon_hours <=', now.time()).filter('mon_hours' >=', now.time())
但是,当我删除其中一个过滤器时,它会返回结果,而不是错误的结果:
now = datetime.datetime.now()
q = Place.all()
q.filter('mon_hours <=', now.time())
当我手动将分钟设置为00时,它可以出于某种原因:
q = Place.all()
q.filter('mon_hours <=', datetime.datetime(1970,1,1,10,00).time()).filter('mon_hours' >=', datetime.datetime(1970,1,1,10,00).time())
最后一个查询是期望的结果,但时间需要是任意分钟的当前时间。
WTF?!
答案 0 :(得分:1)
这段代码是完全你尝试过的吗?请注意,数据存储区不喜欢指示空范围的范围过滤器,并且在这种情况下不返回任何结果 - 因此,例如,你实际上运行了类似q.filter('a&lt;',t).filter('a&gt; =',t)的东西来解释你的结果。
答案 1 :(得分:1)
我的坏。我假设app引擎在像mongodb这样的列表属性上工作。如果将两个不等式过滤器应用于列表属性,则列表中的一个值必须与两者相匹配。在00和30分钟的成功结果标记使用&gt; =,&lt; =其中一个值与两者匹配的工件。
卫生署。