两个不同日期字段的不等式查询

时间:2013-05-17 15:41:16

标签: python google-app-engine google-cloud-datastore

我正在用Python开发一个使用Google App Engine的应用程序。 在我的申请中,我应该节省学生的缺席和理由,所以我有一个班级:

class Absence(ndb.Model):
    day_begin = ndb.DateProperty(required=True)
    day_end = ndb.DateProperty(required=True)
    justified = ndb.BooleanProperty()
    date_range =  ndb.ComputedProperty(lambda self: generate_date_range(self.day_begin, self.day_end), repeated=True)
    student = ndb.KeyProperty(kind=SchoolUser, required=True)

对于每一天,教师都可以看到所有缺席的学生,因此我必须使用day_begin< = today< = day_end查询所有缺席。由于我无法使用多个不等式过滤器进行查询,现在我将该日期中的所有日期保存在date_range字段中,然后对其进行查询。 我想知道这种方法是否有效且有效,或者是否有更好的解决方案? 感谢!!!

1 个答案:

答案 0 :(得分:1)

这是一个合理的解决方案,具体取决于您希望在数据和查询过滤器中看到的范围。 App Engine FTS解决方案类似于支持数字类型。如果遇到性能问题,您可以通过提供多个粒度级别(例如天,月,年)来改进它。

Geo Spacial查询会遇到同样的问题。他们使用空间填充曲线解决它,请参阅https://code.google.com/p/s2-geometry-library-java/

相关问题