django “dict”对象没有属性“id”

ehxuflar  于 2023-02-10  发布在  Go
关注(0)|答案(2)|浏览(133)

这是我的代码。我正在尝试将xml字符串转换为python列表,以便在html模板中显示。

self.task_xml = "<?xml version="1.0" encoding="utf-8"?>
    <django-objects version="1.0">
<object model="task.task" pk="31">
<field name="name" type="CharField">New Task</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="32">
<field name="name" type="CharField">New Task</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="33">
<field name="name" type="CharField">New Task</field>
<field name="parent_task_id" type="IntegerField">31</field>
</object>
<object model="task.task" pk="34">
<field name="name" type="CharField">New Task</field>
<field name="parent_task_id" type="IntegerField">31</field>
</object>
</django-objects>"

 58         self.xmlData = ET.fromstring(self.db.task_xml)
 59 
 60         self.task_list = []
 61         taskList = []                                                           
 62         for obj in self.xmlData.iter("object"):
 63             parent_task_id = obj.find("field[@name='parent_task_id']").text
 64             if parent_task_id == EMPTY_UUID:
 65                 taskList.append({'id': obj.get("pk"),
 66                     'name': obj.find("field[@name='name']").text,
 67                     'parent_task_id': parent_task_id ,
 68                     })
 69         # Apprend taskList:
 70         for task in taskList:
 71             taskViewModel = TaskViewModel(task.id, True)
 72             self.task_list.append(taskViewModel)

但我得到了错误:

'dict' object has no attribute 'id'

第task.id71行是www.example.com
你认为我对第65行有问题吗:

'id': obj.get("pk")
zbdgwd5y

zbdgwd5y1#

您访问字典错误,需要使用带字符串'id'的下标,示例-

taskViewModel = TaskViewModel(task['id'], True)
mbyulnm0

mbyulnm02#

我在使用dot“."*.像JavaScript*.一样访问字典中的**“id”时遇到了同样的错误,如下所示,因为除了Python之外,我还经常使用JavaScript**:

user = {"id": 1, "name": "John"}
print(user.id) # Error

因此,我使用方括号“[]"访问“id”,如下所示,然后错误得到解决:

user = {"id": 1, "name": "John"}
print(user["id"]) # 1

相关问题