获取属性错误:类型对象“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 数据存储)的主要内容,如果未能解决你的问题,请参考以下文章

无法为依赖类型的对象获取未知属性“实现”

角度:错误 TS2339:“对象”类型上不存在属性“数据”

类型对象'用户'没有属性'对象django

类型错误:无法读取未定义的属性“获取”。 (制作音乐机器人)

错误类型错误:无法读取未定义的属性“日期/时间”

从Object对象中读取属性的值