3

App Engine for Python で、クラスを別のクラスに簡単に埋め込んでデータストアに保存できる Objectify (Java ライブラリ) のようなものはありますか?

このクラスは、Venue に Location オブジェクトが含まれる次の例のようにモデル化されます。これを 1 つのネストされたオブジェクトとして保持し、埋め込みオブジェクトのフィールドでクエリできるようにしたいと考えています。

クラス Location():
  都市 = db.StringProperty()
  状態 = db.StringProperty()

クラス Venue(db.Model):
  name = db.StringProperty()
  location = Location()

これが App Engine for Java の Objectify でどのように機能するかについての情報を次に示します。
http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#@Embedded

これはPythonを使用して可能ですか?

4

2 に答える 2

3

Reference プロパティの使用を検討してください。つまり、Location オブジェクトを独自のエンティティとして保存し、その場所を参照によって Venue オブジェクトに組み込みます。

class Location():
  city = db.StringProperty()
  state = db.StringProperty()

class Venue(db.Model):
  name = db.StringProperty()
  location = db.ReferenceProperty(Location)

次に、ロケーションと会場で同時にトランザクションを実行する場合は、データストア トランザクションを使用します。

編集:「含まれる」オブジェクトのフィールドを照会するには、データストアの「後方参照」を使用します。つまり、Venue に Location への参照が含まれているという事実は、Location にも Venue への参照が含まれていることを意味します。参照: http://code.google.com/appengine/docs/python/datastore/datamodeling.html#References

于 2011-07-19T20:26:07.937 に答える
2

現在はありませんが、NDBライブラリは、モデルをプロトコルバッファとしてシリアル化するか、プロパティをネストする(Objectifyファッション)ことにより、モデルを相互に埋め込むことをサポートしています。

于 2011-07-20T00:35:19.977 に答える