0

質問を変更します。ManyToManyとの関係db.Modelを適用したいNDB。例

NDBモデル

class my_NDB(search.SearchableModel):
   .......
   .......

dbモデル

class Test(search.SearchableModel):
  email = db.StringProperty()
  created_by = db.IntegerProperty()

ManyToManyこれらのモデル間に関係を適用できますか?

編集:

これが私のUserモデルです

  class User(model.Expando):
    """Stores user authentication credentials or authorization ids."""

    #: The model used to ensure uniqueness.
    unique_model = Unique
    #: The model used to store tokens.
    token_model = UserToken

    created = model.DateTimeProperty(auto_now_add=True)
    updated = model.DateTimeProperty(auto_now=True)
    # ID for third party authentication, e.g. 'google:username'. UNIQUE.
    auth_ids = model.StringProperty(repeated=True)
    # Hashed password. Not required because third party authentication
    # doesn't use password.
    email = model.StringProperty(required=True)
    is_active = model.BooleanProperty(required=True)
    password = model.StringProperty()

そして、これが私のTest dbモデルです

class Test(search.SearchableModel):
  email = db.StringProperty()
  created_by = db.IntegerProperty()

今、テストに manyToMany を適用したいと思います。出来ますか?

Django スタイルの多対多

created_by = models.ManyToManyField(User)
4

1 に答える 1

3

分かりました。Django ManyToManyField ドキュメントを調べなければなりませんでした。IIUC では、テストを複数のユーザーで作成する必要があります。もちろん、各ユーザーは複数のテストを作成できます。私はそれを正しく理解していますか?

これを行う方法はdb.ListProperty(db.Key)、Test クラスにキーのリスト (キーが User エンティティを指す場所) を持つように、Test クラスに を含めることです。

これで User モデルは NDB クラスになり、問題が少し複雑になります。ただし、ndb Key クラスには、db キーとの間で変換するための API があります。

  • ndb キー k がある場合k.to_old_key()、対応する db.Key を返します。

  • db Key k がある場合ndb.Key.from_old_key(k)は、その ndb.Key を返します (これはクラス メソッドです)。

お役に立てれば。幸運を!

PS。from google.appengine.ext import ndbndb.Expando、ndb.StringProperty などを記述できるように、使用するコードを更新してください。

于 2012-03-17T04:48:26.287 に答える