获取属性错误:类型对象“Level_2_Headings”没有属性“祖先”(GAE 数据存储)
Posted
技术标签:
【中文标题】获取属性错误:类型对象“Level_2_Headings”没有属性“祖先”(GAE 数据存储)【英文标题】:Getting attributeError: type object 'Level_2_Headings' has no attribute 'ancestor' (GAE datastore) 【发布时间】:2013-01-03 20:28:48 【问题描述】:我正在使用 GAE、Datastore、Python 2.7,并且是第一次使用祖先在数据存储中创建/更新条目。在这里,我试图查看Level_2_Headings
数据存储中是否有任何条目/行,如果没有,则创建一个新条目/行。如果确实存在,则更新描述。我收到了这个错误——Level_2_Headings
的数据存储是空的,所以它应该是空的,以便我可以添加新条目,但是,我在查询 q2
对象时遇到错误,我在其中使用祖先属性 - 关于为什么会出现这种情况的任何想法,因为我期望只返回一个空对象,因为它在数据存储中不存在?一如既往地感谢您的帮助。
if q:
q2 = Level_2_Headings.ancestor(q.key()).filter("name2 =",heading2).get()
if q2:
q2.description2 = description2
q2.put()
else:
#new level 2 being added to ds
new_2 = Level_2_Headings(parent=q2, name2=name2, description2=description2, heading_type=heading_type)
new_2.put()
message="Added NEW category entry to level 2"
【问题讨论】:
【参考方案1】:您直接引用Level_2_Heading
模型,而不调用all()
来检索记录。 Level_2_Headings.all()
将返回一个具有 ancestor
属性的对象,因此请尝试将您的第一个 q2
更改为:
q2 = Level_2_Headings.all().ancestor(q.key()).filter("name2 =",heading2).get()
【讨论】:
以上是关于获取属性错误:类型对象“Level_2_Headings”没有属性“祖先”(GAE 数据存储)的主要内容,如果未能解决你的问题,请参考以下文章