저는 AppEngine에서 시작하여 endpoints_proto_datastore 라이브러리를 사용하고 있습니다. 내 문제 : 특정 재생 목록에 대한 모든 PlaylistItems를 나열하려고하면 쿼리 경로의 '재생 목록'매개 변수가 무시 된 것 같습니다. 방금 모든 재생 목록에서 모든 PlaylistItem을 검색합니다.키 프로퍼티에 의한 파이썬 endpoints_proto_datastore 쿼리
내가 뭘 잘못하고 있니? 모델이 KeyProperty와 관련이 있고 경로 요소를 통해 쿼리되는 두 모델로 예제를 찾을 수 없었습니다. 또한 키 스토어에 PlaylistItem.playlist가 표시되지 않는 이유를 이해할 수 없습니다 (키의 일부가 아닌 경우).
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
메서드와 alias-property의'playlist'와 KeyProperty의'playlist' 사이에 이름 충돌이있을 수 있습니다. 어쩌면 이름 바꾸기를 시도해보십시오. 또한,'def playlist'의 본체는'playlist'를 언급하지만 아무 것도하지 않습니다 (그래서 None을 반환합니다). 아마도'return'을 의미할까요? –
감사! 두 가지 변경을하고 내 데이터 저장소를 지우고 이제 마침내 작동합니다. 내가 만든 정확한 변경 내용을 덧붙일 것입니다 – pisquared