【问题标题】:How to Clear a model object list如何清除模型对象列表
【发布时间】:2015-12-20 04:45:50
【问题描述】:

这是我的代码的一部分。

dbList = []
for obj in xmlData.iter("object")
    task = TaskViewModel()
    task.id = obj.("pk")
    task.name = obj.find("field[@name='name']").text
    task.parent_task_id = obj.find("field[@name='parent_task_id']").text
    dbList.append(task)

我的问题是它只会给我重复的结果。

我的预期结果是:

dbList = ["dale","Michelle","Fred","Debbie"]

但它给了我这个结果:

dbList = ["Debbie","Debbie","Debbie","Debbie"]

我想我应该清除一些东西。

您好,这是示例文件:

<?xml version="1.0" encoding="utf-8"?>
    <django-objects version="1.0">
<object model="task.task" pk="31">
<field name="name" type="CharField">Dale</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="32">
<field name="name" type="CharField">Michelle</field>
<field name="parent_task_id" type="IntegerField">0</field>
</object>
<object model="task.task" pk="33">
<field name="name" type="CharField">Fred</field>
<field name="parent_task_id" type="IntegerField">31</field>
</object>
<object model="task.task" pk="34">
<field name="name" type="CharField">Debbie</field>
<field name="parent_task_id" type="IntegerField">31</field>
</object>
</django-objects>"

我有这门课

class TaskViewModel():
   id = 0
   name = ""
   parent_task_id = ""

这就是我这样做的原因:

for obj in xmlData.iter("object")
    task = TaskViewModel()
    task.id = obj.("pk")
    task.name = obj.find("field[@name='name']").text
    task.parent_task_id = obj.find("field[@name='parent_task_id']").text
    dbList.append(task)

【问题讨论】:

  • 您可能应该添加一个示例 xml 文件。
  • 是的。查看源数据的样子有助于调试
  • 大家好,我添加了我的 xml 文件
  • 它只是在线读取最后一个值但四次

标签: python django xml-parsing


【解决方案1】:

我不确定你用什么来解析你的 xml,我使用了 xml 库并设法得到以下内容:

t.xml 是您发布的 XML 文件。

from xml.etree import ElementTree

with open('t.xml') as f:
    tree = ElementTree.parse(f)

dbList = []
for node in tree.iter():
    if node.tag == 'field' and node.attrib.get('name') == 'name':
        dbList.append(node.text)

【讨论】:

  • 是的,我也这样做了,但它仍然给了我结果:dbList = ["Debbie", "Debbie", "Debbie", "Debbie"]
  • 这很奇怪。我用 XML 运行了这段代码,我得到了['Dale', 'Michelle', 'Fred', 'Debbie']
  • 我明白了...因为在我的情况下...我必须将它附加到 dbList.append(task) where in task = TaskViewmodel()... 我将编辑我的问题,这样你就可以明白我的意思
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2020-07-16
  • 2011-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多