Necesito escribir datos del modelo (CharField
s solamente) en un archivo XML para contener los datos de un archivo flash. Soy nuevo en esto, y el proceso no me es claro por hacer esto en django. Estoy creando un archivo xml y luego escribiendo los datos de texto en el archivo (como se hace con el módulo csv, pero a xml). Un archivo XML muy simplificada debería implicar para el archivo flash para leer, es decir:Generar archivo XML a partir de los datos del modelo
<?xml version="1.0" encoding="UTF-8"?>
<textFields>
<textField id="0" text="HELLO WORLD" />
<textField id="1" text="HELLO EARTH" />
...
</textFields>
1. Estoy utilizando un serializador para escribir los datos XML del modelo:
from django.core import serializers
data = serializers.serialize('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))
2. Entonces crear el archivo usando core.files
:
from django.core.files import File
f = open('/path/to/new/dir/content.xml', 'w')
myfile = File(f)
3. Los datos de escritura de archivo y cierre:
myfile.write(data)
myfile.close()
Esto funciona hasta ahora, aunque la salida xml contiene los campos para el objeto "django-objects", etc., y tendré que ver si puedo interpretar esto en ActionScript fácilmente para el archivo flash. Preferiría definir los nombres de campo xml manualmente como en el módulo csv. Como soy nuevo en django y python, me pregunto si existe una forma más fácil y sencilla de hacerlo.
Nota: En serializador que use el filtro de los objetos del modelo porque el uso de get
para la instancia de modelo devuelve un error object not iterable
. De hecho, lo filtro dos veces para obtener una sola instancia, parece que debe haber una mejor manera.
No tengo claro el formato XML que desea. ¿Es un elemento 'textField' igual a una sola fila en la base de datos, cada una con un solo campo? Si es así, ¿a qué se refiere el número 'id'? Si no, ¿cómo se diferencian entre filas? –
Además, ¿ha considerado JSON como un formato de serialización? Es mucho más fácil crear y consumir. –
Sí, textField sería una sola entrada de charField en el DB (cada campo de entrada de db para rellenar un campo de texto en un archivo flash). Lamentablemente, la identificación era un poco confusa, la idea es que hay varios campos de texto en el archivo flash, por lo que los id se corresponden con diferentes caracteres de caracteres en el modelo. Deben ser diferentes modelos de charFields. Estoy investigando JSON ahora, normalmente he usado xml con AS3, parece hasta ahora que JSON requeriría una importación de biblioteca AS3, y para esta aplicación eso no es una opción desafortunadamente. – HdN8