У меня возникают некоторые странные ошибки от protorpc
, когда я использую конечные точки. В этом коде:Endpoints API - ошибка проверки protorpc
class Application(EndpointsModel):
_message_fields_schema = ('id', 'name')
created = ndb.DateTimeProperty(auto_now_add=True)
name = ndb.StringProperty()
roles = ndb.IntegerProperty(repeated=True)
updated = ndb.DateTimeProperty(auto_now=True)
owner = ndb.KeyProperty(kind='User')
@API.api_class(resource_name="application")
class ApplicationApi(protorpc.remote.Service):
@Application.method(http_method="GET",
request_fields=('id',),
name="get",
path="applications/{id}")
def ApplicationGet(self, instance):
if not instance.from_datastore:
raise endpoints.NotFoundException("Application not found.")
return instance
@Application.query_method(http_method="GET",
query_fields=('limit', 'order', 'pageToken'),
name="list",
path="applications")
def ApplicationList(self, query):
return query
, когда я звоню application.get()
ошибка выглядит следующим образом: (full trace here):
TypeError: Can only copy from entities of the exact type Application. Received an instance of Application.
и для вызова application.list()
ошибки следующим образом: (full trace here):
ValidationError: Expected type
<class '.Application'>
for field items, found<Application name: u'test'>
(type<class '.Application'>
)
Что может быть причиной этого? Мои другие модели с почти одинаковым кодом (только разные свойства) работают нормально.
Эти следы выглядят так, как будто вы используете экземпляр 'Application' вместо объекта класса (типа)' Application'. Вы уверены, что не используете 'Application()' где-то в своем коде? –
Просто проверено дважды, я не использую его нигде - в этом вопросе присутствует весь соответствующий код. Я расширяю класс 'ApplicationApi (BaseRemoteService)', но не упоминаю о приложении там, и есть метод POST api (который работает ...), но даже если я удалю все, что я все еще получаю те же ошибки с помощью только код из OP. – Sasxa
Это выстрел в темноте, но до подкласса «EndpointsModel», подкласса 'Application'' ndb.Model'? Попробуйте выполнить цикл через все сущности 'Application' и снова« положить »на них. Я думаю, что ключ, который вы передаете, извлекает объект, но что-то о цепочке наследования делает поля '__class__' не совпадают. –