- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我刚刚开始使用 AppEngine 并使用 endpoints_proto_datastore 库。我的问题:当我尝试列出特定播放列表的所有 PlaylistItems 时,查询路径中的“播放列表”参数似乎被忽略。我只是从所有播放列表中检索所有播放列表项。
我做错了什么?我无法找到任何具有两个模型的示例,其中模型通过 KeyProperty 关联并通过路径元素查询。我也不明白为什么我在数据存储区中看不到 PlaylistItem.playlist(除非它是 key 的一部分)。
这些是相关的模型和方法:
from endpoints_proto_datastore.ndb import EndpointsAliasProperty
from endpoints_proto_datastore.ndb import EndpointsModel
class Playlist(EndpointsModel):
"""Models an individual Playlist."""
# fixed order
_message_fields_schema = ('id', 'user', 'title', 'private', 'created')
# actual stored information
user = ndb.StringProperty(required=True, indexed=True)
title = ndb.StringProperty(required=True, indexed=False)
private = ndb.BooleanProperty(required=False, default=True, indexed=False)
created = ndb.DateTimeProperty(required=False, auto_now_add=True, indexed=False)
class PlaylistItem(EndpointsModel):
"""Models a playlist item (appid)"""
# fixed order
_message_fields_schema = ('appid', 'inserted')
# actual stored information
appid = ndb.StringProperty(required=True, indexed=False)
inserted = ndb.DateTimeProperty(required=False, auto_now_add=True, indexed=True)
playlist = ndb.KeyProperty(required=True, kind=Playlist, indexed=True)
def PlaylistSet(self, value):
playlist = ndb.Key(Playlist, value)
@EndpointsAliasProperty(setter=PlaylistSet, required=True)
def playlist(self):
playlist
以及相关方法:
@PlaylistItem.method(path='playlist/{playlist}/items', http_method='POST', name='playlist.items.put',
request_fields=('playlist','appid'))
def PlaylistItemPut(self, PlaylistItem):
PlaylistItem.put()
return PlaylistItem
@PlaylistItem.query_method(path='playlist/{playlist}/items', name='playlist.items.list',
query_fields=('playlist',),)
def PlaylistItemList(self, query):
return query # problem, I just retrieve all PlaylistItems
最佳答案
我根据 Alex 的建议更改了代码。看来我遇到的最重要的错误是没有使用 PlaylistSet 方法中的 self.playlist 。后来我遇到了亚历克斯指出的命名冲突。以下是所有更改后的工作代码:
class PlaylistItem(EndpointsModel):
"""Models a playlist item (appid)"""
# fixed order
_message_fields_schema = ('appid', 'inserted')
# actual stored information
appid = ndb.StringProperty(required=True, indexed=False)
inserted = ndb.DateTimeProperty(required=False, auto_now_add=True, indexed=True)
playlist = ndb.KeyProperty(required=True, kind=Playlist, indexed=True)
def PlaylistSet(self, value):
self.playlist = ndb.Key(Playlist, value) # FIX: MUST use self.playlist here!
@EndpointsAliasProperty(setter=PlaylistSet, required=True)
def myplaylist(self): # renamed the method
return playlist # return the playlist
还更新了 Playlist API 方法以使用新的 myplaylist 名称:
@PlaylistItem.method(path='playlist/{myplaylist}/items', http_method='POST', name='playlist.items.put',
request_fields=('myplaylist','appid')) # renamed request field
def PlaylistItemPut(self, PlaylistItem):
PlaylistItem.put()
return PlaylistItem
@PlaylistItem.query_method(path='playlist/{myplaylist}/items', name='playlist.items.list',
query_fields=('myplaylist',),) # renamed request field
def PlaylistItemList(self, query):
return query
我还可以在数据存储查看器中看到播放列表“列”(如您所料,之前未设置)。
关于Python endpoints_proto_datastore 通过 KeyProperty 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035185/
我有这两个模型: ################# ### Usergroup ### ################# class Usergroup(ndb.Model): group
我在理解实体和键在 Google App Engine NDB 中的工作方式时遇到一些问题。 我有一个 post 实体和一个 user 实体。如何将 post 上的 user_key 设置为 user
我有两个模型: class User(ndb.Model): email = ndb.StringProperty(required=True) name = ndb.StringPr
众所周知,应用引擎中的 keys_only 查询速度很快。 Google App Engine 现在可以运行“投影查询”,它可以只返回部分实体数据 https://developers.google.
我试图通过使用将字符串转换为相应类型的 Key 的自定义验证器来简化 ndb KeyProperties 的 JSON 序列化和反序列化。 想法是拥有这样的属性: def key_validator(
我刚刚开始使用 AppEngine 并使用 endpoints_proto_datastore 库。我的问题:当我尝试列出特定播放列表的所有 PlaylistItems 时,查询路径中的“播放列表”参
我已经查看了文档、文档和 SO 问题和答案,但仍在努力理解其中的一小部分。您应该选择哪个以及何时选择? 这是我到目前为止读过的内容(只是示例): ndb documentation movie dat
是否可以根据 KeyProperty 的祖先(父级)进行查询? EG,类似于以下内容: class Foo(ndb.Model): bar = ndb.KeyProperty() Foo.qu
我有一个简单的ndb模型如下: class TaskList(ndb.Model): title = ndb.StringProperty() description = ndb.Te
我有一些共享一组公共(public)属性的模型,我在其他模型继承的基本模型类中定义了这些属性: class BaseUser(ndb.Model): name = ndb.StringProp
在 AppEngine 的 NDB 数据存储中,似乎有两种方法可以将对象相互关联起来。有 ndb.KeyProperty 和 parents/ancestors keys .我对什么时候应该使用一个或
我有一个简单的场景,其中有一个 User 类,它具有 name、email 和 followers 属性。 class User(ndb.Model): name = ndb.StringPr
我正在尝试开发一个应用程序,其中 Student 实体通过它们的键添加到 Class 实体。所以在类里面,我可以有一个 List 的学生,可以通过他们的键来识别,这些键可以是 Integer 或 St
我正在使用 flask-appengine-template来自 kamalgill,我遇到了一个奇怪的问题。 我的 models.py 文件如下所示: from google.appengine.e
假设一个 NDB(版本 0.7 和 0.8)模型,其键可以是 None: class Test(model.Model): k = model.KeyProperty() value
ReferenceProperty 在处理两个模块之间的引用方面非常有帮助。狐狸例子: class UserProf(db.Model): name = db.StringProperty(r
有关于如何set的帖子, get , KeyProperty/StructuredProperty ,但没有任何内容告诉我如何使用 NDB 进行多对一建模。 我有两个模型: class Departm
我的问题是关于在 ndb 中建模一对多关系。我知道这可以通过(至少)两种不同的方式来完成:使用重复的属性或使用“外键”。我在下面创建了一个小例子。基本上我们有一篇文章可以有任意数量的标签。假设可以删除
我是一名优秀的程序员,十分优秀!