1

曜日のビジネスの営業時間と終了時間を表す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 ?!

4

2 に答える 2

1

このコードはあなたが試したものとまったく同じですか?データストアは、空の範囲を示す範囲フィルターを好みません。その場合、結果は返されません。たとえば、実際にq.filter('a <'、t).filter('a> ='、t)それはあなたの結果を説明するでしょう。

于 2012-03-07T03:30:18.693 に答える
1

私の悪い。私は、アプリエンジンがmongodbのようなリストプロパティで機能すると仮定しました。2つの不等式フィルターがリストプロパティに適用される場合、リスト内の1つの値が両方に一致する必要があります。00分と30分で成功した結果は、1つの値が両方に一致する> =、<=を使用した場合のアーティファクトです。

ドー。

于 2012-03-09T17:12:01.013 に答える