2015-08-27 4 views
3

это мой код. Я пытаюсь перевести строку xml в список python, который будет отображаться в html-шаблоне.'dict' объект не имеет атрибута 'id'

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.id в строке 71

вы думаете, у меня есть проблема с этим в строке 65:

'id': obj.get("pk" 
+1

Вместо использования 'task.id' вы должны использовать' задачи [ «ID»] ' – alfasin

ответ

10

Вы неправильно используете словарь. Вы должны использовать подстрочный шпагатом 'id', пример -

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

Боже мой !!! Большое вам спасибо ... Вау ... Ананд С Кумар, Большое вам спасибо за то, что помог мне –

+0

Рад, что я мог быть полезным :). –

+0

Я сейчас работал! –

Смежные вопросы