Potrzebuję zapisać dane modelu (tylko CharField
) do pliku XML, aby zawierał dane dla pliku flash. Jestem na to nowy i proces ten jest dla mnie trochę niejasny, ponieważ robię to w django. Tworzę plik xml, a następnie zapisuję dane tekstowe do pliku (tak jak w przypadku modułu csv, ale do xml). Bardzo uproszczony plik xml powinien prowadzić do pliku Flash czytać, tj:Generowanie pliku XML z danych modelu
<?xml version="1.0" encoding="UTF-8"?>
<textFields>
<textField id="0" text="HELLO WORLD" />
<textField id="1" text="HELLO EARTH" />
...
</textFields>
1. Używam serializatora do zapisu danych XML z modelu
from django.core import serializers
data = serializers.serialize('xml', myModel.objects.filter(instanceIwantTowrite), fields=('fieldName'))
2. Następnie utworzyć plik, używając core.files
:
from django.core.files import File
f = open('/path/to/new/dir/content.xml', 'w')
myfile = File(f)
3. dane zapisu pliku i zamknij
myfile.write(data)
myfile.close()
To działa do tej pory, chociaż wyjściowe xml zawiera pola dla obiektu "django-objects" itp. I będę musiał zobaczyć, czy mogę to zinterpretować w ActionScripcie z łatwością dla pliku flash. Wolałbym definiować nazwy pól xml ręcznie, jak w module csv. Ponieważ jestem nowy w Django i Pythonie, zastanawiam się, czy jest łatwiejszy i prostszy sposób na zrobienie tego?
Uwaga: W serializatora używam filtru na modelu obiektów, ponieważ używając get
dla instancji modelu zwraca błąd object not iterable
. W rzeczywistości filtruję go dwukrotnie, aby uzyskać pojedyncze wystąpienie, wydaje się, że musi istnieć lepszy sposób.
Nie mam jasności co do pożądanego formatu XML. Czy element 'textField' jest równy jednemu wierszowi w bazie danych, z których każdy ma pojedyncze pole? Jeśli tak, to jaki jest numer "identyfikatora"? Jeśli nie, w jaki sposób rozróżniasz wiersze? –
Czy uważasz, że JSON jest formatem serializacji? O wiele łatwiej jest tworzyć i konsumować. –
Tak, textField byłby pojedynczym wpisem charField w DB (każde pole wejściowe db do wypełnienia pola tekstowego w pliku flash). Niestety, id był nieco mylący, chodzi o to, że istnieje wiele pól tekstowych w pliku flash, więc id odpowiadają różnym charFields w modelu. Powinny być różne modele charFields. Teraz zajmuję się JSON-em, zwykle używam xml z AS3, wydaje mi się, że JSON wymaga importowania bibliotek AS3, a dla tej aplikacji niestety nie jest to opcja. – HdN8