0

作成された非 NDB エンティティと、このオブジェクトを所有する webapp2 ユーザーがあります。キーをインスタンス変数として保持することは可能ですか? これを行おうとすると例外が発生します。

'Ad' object has no attribute '_values'
Traceback (most recent call last):
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1511, in __call__
    rv = self.handle_exception(request, response, e)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1505, in __call__
    rv = self.router.dispatch(request, response)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1253, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 1077, in __call__
    return handler.dispatch()
  File "/base/data/home/apps/s~montaoproject/sessions.358423846858516313/authhandlers.py", line 21, in dispatch
    webapp2.RequestHandler.dispatch(self)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 547, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/webapp2.py", line 545, in dispatch
    return method(*args, **kwargs)
  File "/base/data/home/apps/s~montaoproject/sessions.358423846858516313/main.py", line 3004, in post
    ad.usr = self.current_user.key
  File "/base/data/home/apps/s~montaoproject/sessions.358423846858516313/ndb/model.py", line 1039, in __set__
    self._set_value(entity, value)
  File "/base/data/home/apps/s~montaoproject/sessions.358423846858516313/ndb/model.py", line 801, in _set_value
    self._store_value(entity, value)
  File "/base/data/home/apps/s~montaoproject/sessions.358423846858516313/ndb/model.py", line 785, in _store_value
    entity._values[self._name] = value
AttributeError: 'Ad' object has no attribute '_values'

問題のあるコード

if self.current_user:
    logging.info('user:'+str(self.current_user))
    ad.usr = self.current_user.key
    ad.put

モデル

class Ad(GeoModel, search.SearchableModel):

    primary_image = blobstore.BlobReferenceProperty()
    usr = ndb_model.KeyProperty()
    ...

私がやろうとしていることを行うための推奨される方法はありますか?

ありがとう

4

1 に答える 1

4

NDB と db のキー タイプは異なります。次のように、NDB キー (self.current_user.key) を db.Key インスタンスに変換する必要があります。

ad.usr = self.current_user.key.to_old_key()

https://developers.google.com/appengine/docs/python/ndb/keyclass#Key_to_old_keyを参照してください

于 2012-04-24T05:01:07.440 に答える