我需要将模型数据(CharField
仅限s)写入XML文件以包含flash文件的数据.我是新手,对于我在django这样做的过程有点不清楚.我正在创建一个xml文件,然后将文本数据写入文件(就像使用csv模块,但是使用xml).应该为Flash文件读取一个非常简化的xml文件,即:
...
1.我正在使用序列化程序从模型中编写xml数据:
from django.core import serializers data = serializers.serialize('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))
2.然后我用core.files
以下方法创建文件:
from django.core.files import File f = open('/path/to/new/dir/content.xml', 'w') myfile = File(f)
3.写入文件数据并关闭:
myfile.write(data) myfile.close()
这个工作到目前为止,虽然xml输出包含对象"django-objects"等的字段,我将不得不看看我是否可以在ActionScript中轻松地为flash文件解释这个.我更喜欢手动定义xml字段名称,就像在csv模块中一样.由于我是django和python的新手,我想知道是否有更简单,更简单的方法来做到这一点?
注意:在序列化程序中,我对模型对象使用过滤器,因为get
用于模型实例会返回object not iterable
错误.事实上,我过滤两次以获得单个实例,似乎必须有更好的方法.
您有两种可能的解决方案:
1.
您可以扩展基础django xml serializer(django.core.serializers.xml_serializer.Serializer
)并对其进行修改,以便它返回结构中的数据.然后你可以运行ex.
YourSerializer('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))
它将在您的结构中输出数据.
2.
编写简单的函数,使用您的数据结构呈现模板并以您的格式返回xml数据:
Python代码
from django.template.loader import render_to_string def my_serialize(query_set): xml = render_to_string('xml_template.xml', {'query_set': query_set}) return xml
模板xml_template.xml
{% for object in query_set %} {% endfor %}