私はこれに似たシナリオを持っており、最良/最も一般的な解決策を見つけようとしています:
class Car(db.Model):
peopleCapacity = db.IntegerProperty()
class Wheel(db.Model):
car = db.ReferenceProperty(reference_class=Car, collection_name='wheels')
diameter = db.IntegerProperty()
この種のクエリの結果が必要です。
smallWheelsForBigCars = db.GqlQuery(
'SELECT * FROM Wheel WHERE diameter < 10 AND car.peopleCapacity > 6'
)
# returns 0 entities as properties like 'car.peopleCapacity' are apparently not supported
私が検討したいくつかの(ハッキーな)ソリューション:
- WheelとCarのコンストレイントを個別に実行し、交差点を手動でチェックします(遅い!)
- calculatedPropertyを使用して、car.peopleCapacityのコピーをWheelに保存します。(悪いです。車のpeopleCapacityが変更されたときに、車に接続されているすべてのホイールを更新する必要があるためです。実際の場合、「peopleCapacity」も変更されます)
私の2つの質問は次のとおりです。car.peopleCapacityが
クエリで機能しないのはなぜですか。
これに対するより良いアプローチはありますか?