改变问题。我想在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()
现在我想在Test上应用manyToMany。有可能吗?
Django风格ManyToMany
created_by = models.ManyToManyField(User)
答案 0 :(得分:3)
我明白了。我不得不查找Django ManyToManyField文档。 IIUC您希望由多个用户创建测试,当然每个用户都可以创建多个测试。我做对了吗?
执行此操作的方法是在Test类中使用db.ListProperty(db.Key)
,以便Test类具有键列表 - 其中键指向用户实体。
现在你的用户模型是一个NDB类,这让事情变得复杂一些。但是,ndb Key类具有用于与db Keys进行转换的API:
如果你有一个ndb密钥k,k.to_old_key()
将返回相应的db.Key。
如果你有一个数据库密钥k,ndb.Key.from_old_key(k)
会返回它的ndb.Key(这是一个类方法)。
希望这会有所帮助。祝你好运!
PS。请更新您的代码以使用from google.appengine.ext import ndb
,以便您可以编写ndb.Expando,ndb.StringProperty等。