【问题标题】:AttributeError: 'Query' object has no attribute 'key' (AppEngine)AttributeError:“查询”对象没有属性“键”(AppEngine)
【发布时间】:2016-04-27 16:04:30
【问题描述】:

目前我正在做一个项目,我试图从我的 ndb 实体中删除一行。我用于删除的代码是

copyquery = joinrequest.query(joinrequest.email == "abc@test.com")
copyres = copyquery.get()
copyres.key.delete()

但它并没有删除它。它给出了这个错误

   Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__
    rv = self.handle_exception(request, response, e)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__
    rv = self.router.dispatch(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "C:\Users\shaizi\PycharmProjects\WildPakistan\gigster\main.py", line 203, in dispatch
    webapp2.RequestHandler.dispatch(self)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "C:\Users\shaizi\PycharmProjects\WildPakistan\gigster\main.py", line 798, in get
    copyres.key.delete()
AttributeError: 'BlobKey' object has no attribute 'delete'

NDB 模型类代码

class joinrequest(ndb.Model):

name = ndb.StringProperty(required=True)
email = ndb.StringProperty(required=True)
password = ndb.StringProperty(required=True)
gender = ndb.StringProperty(required=True)
d = ndb.StringProperty(required=True)
m = ndb.StringProperty(required=True)
y = ndb.StringProperty(required=True)
phoneno = ndb.StringProperty(required=True)
address = ndb.StringProperty(required=True)
city = ndb.StringProperty(required=True)
country = ndb.StringProperty(required=True)
selfdescription = ndb.StringProperty(required=True) 

key = ndb.BlobKeyProperty()  

【问题讨论】:

  • 我已经更新了它,但现在我收到了这个错误。
  • 其实就是整个代码。我只想从 ndb 模型类中删除一个简单的行。要我给大家分享一下模型类结构吗?
  • 我正在使用 Blob Key 来存储图像。

标签: python google-app-engine google-cloud-datastore app-engine-ndb


【解决方案1】:

ndb 包中的模型有一个名为“key”的标准属性。

您的模型正在使用 BlobKey 属性覆盖 key 属性。

这就是你得到异常的原因

AttributeError: 'BlobKey' object has no attribute 'delete'

在实例的键上调用delete 时。

将您的 key 属性重命名为其他名称,以便调用 key.delete() 将到达标准键属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2021-07-21
    • 2019-12-17
    相关资源
    最近更新 更多