曜日のビジネスの営業時間と終了時間を表す2つの時間オブジェクトを含むエンティティに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)
現在の時刻を使用してこのエンティティにクエリを実行し、フィルタをチェーンして、リストの時刻が長短のレコードのみを適切に返すと、結果が0になり失敗します。
now = datetime.datetime.now()
q = Place.all()
q.filter('mon_hours <=', now.time()).filter('mon_hours' >=', now.time())
ただし、フィルターの1つを削除すると、結果が返されますが、間違った結果が返されます。
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 ?!