gpt4 book ai didi

python - 无效过滤器 : Only one property per query may have inequality filters (>=, <=、>、<)

转载 作者:太空宇宙 更新时间:2023-11-04 01:22:03 26 4
gpt4 key购买 nike

我有一些项目可以在特定时段预订。例如。网球场因此,每个项目都有许多关联的可用性槽,每个槽由开始时间和结束时间定义。开始时间和结束时间被定义为日期时间对象,因此 09.00 - 11.30 的可用性时段存储为例如。 2013-12-13 09.00(开始时间)到 2013-12-13 11.30(结束时间)。

收到预订请求时,我需要查明网球场是否可用于所需时间段。

所以我尝试根据开始时间和结束时间过滤可用性时段,我的查询如下所示:

desired_availability_start = datetime(2013, 12, 13, 9,0,0)
desired_availability_end = datetime(2013, 12, 13, 10,0,0)
availability_slots = self.availability_slots.filter("begin <= ", desired_availability_start).filter("end >= ", desired_availability_end).fetch(limit=10)

但我得到以下错误

invalid filter: Only one property per query may have inequality filters (>=, <=, >, <)

因为我正在尝试同时过滤 begin- 和 end-property。

基于输入和关于该主题的其他一些帖子 Inequality Filter in AppEngine DatastoreBadFilterError: invalid filter: Only one property per query may have inequality filters (<=, >=, <, >)我目前的解决方案是首先在开始时进行过滤:

filtered_availability_slots = self.availability_slots.filter("begin <= ", desired_availability_start).fetch(limit=10)

然后在最后过滤并将过滤后的项目附加到列表中:

final_availability_slots = []              
for availability in filtered_availability_slots:
if availability.end >= desired_availability_end:
final_avaialability_slotes.append(availability)

但这是实现我想要实现的目标的最佳方式吗?

我正在使用 Google App Engine 和 Python

感谢任何帮助

谢谢托马斯

最佳答案

我猜您已经知道,使用数据存储时,您不能将多个变量与不等式过滤器一起使用。除非您确实需要,否则您可以仅使用“开始”时间进行过滤,并且仍然可以获得非常准确的结果。

calitem = self.appointments.filter("begin >= ", start).filter("begin <= ", end).fetch(limit=10)

如果您确实需要,使用您的应用程序逻辑,您可以只显示不超出“结束”值的项目。我看不到任何其他方式。

关于python - 无效过滤器 : Only one property per query may have inequality filters (>=, <=、>、<),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20568673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com