2013-05-17 42 views
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全部缺席< =今天< = day_end。由於我無法使用多個不等式過濾器進行查詢,因此現在我將字段「date_range」中的所有日期保存在該範圍內,然後對其進行查詢。 我想知道這種方法是否有效且有效,或者是否有更好的解決方案? 謝謝!

回答

1

這是一個合理的解決方案,具體取決於您期望在數據和查詢過濾器中看到的範圍。 App Engine FTS解決方案的作用類似於支持數字類型。如果遇到性能問題,您可以通過具有多個粒度級別(例如幾天,幾個月,幾年)來改進它。

地理空間查詢遇到同樣的問題。他們使用空間填充曲線解決它,請參閱https://code.google.com/p/s2-geometry-library-java/

+0

你是對的,我打算只存儲一個學年的缺席,所以他們不應該很多。謝謝!!! – user2302436