1

我正在使用 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 中,然后对其进行查询。我想知道这种方法是否有效且有效,或者是否有更好的解决方案?谢谢!!!

4

1 回答 1

1

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

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

于 2013-05-21T14:20:04.407 回答