Django: Einfache Backups von belieben Models machen?
Verfasst: Montag 31. Dezember 2007, 16:38
Hallo,
ich baue gerade an einer kleinen Django-App, welche von einem beliebigen Model ein XML-Backup erstellen können soll. Das ganze spielt sich in einem einzigen View ab, der über /backup/<app>/<model>/ erreicht werden soll. Mein Problem ist jetzt nur, dass ich das ganze flexibel gestalten muss, weil es ja jedes beliebige Model sein kann.
Anfangsschwierigkeit für mich als Python-Lernenden ist erstmal: Wie kann ich von einer Variable importieren? Mag seltsam klingen, aber ich muss ja erstmal das Model anhand des URL-Parameters importieren. Sachen wie
funktionieren ja leider nicht… Einzige Möglichkeit wäre natürlich alles zu importieren, aber dann hätte ich wieder keinen "Namen", um mein Model auszuführen (MyModel.objects.all() wäre da ja kein Problem). Ich hoffe, mir kann einer sagen, wie ich das ganz lösen kann…
Als nächstes muss ich natürlich noch eine Möglichkeit finden, alle Felder des Models mit Namen auszulesen… auch da habe ich keinen blassen Schimmer, wie das gehen soll… Ich hab mich in den Django Admin Dateien schon mal was umgesehen und die Funktion "get_model" gefunden, weiß aber noch nicht genau, was sie macht. Ich hoffe, auch hier kann mir jemand erklären, wie ich so etwas machen kann.
Mein Template soll am Ende also etwa so aussehen, wobei entries die Datensätze aus MyModel.objects.all() ist und fields die Felder des Models sind (und demnach entry.fields der Inhalt für das Feld):
Vielen Dank für eure Hilfe! Ich hoffe, das lässt sich mit den richtigen Meta-Funktionen so machen!
Pascal[/code]
ich baue gerade an einer kleinen Django-App, welche von einem beliebigen Model ein XML-Backup erstellen können soll. Das ganze spielt sich in einem einzigen View ab, der über /backup/<app>/<model>/ erreicht werden soll. Mein Problem ist jetzt nur, dass ich das ganze flexibel gestalten muss, weil es ja jedes beliebige Model sein kann.
Anfangsschwierigkeit für mich als Python-Lernenden ist erstmal: Wie kann ich von einer Variable importieren? Mag seltsam klingen, aber ich muss ja erstmal das Model anhand des URL-Parameters importieren. Sachen wie
Code: Alles auswählen
import '%s.models.%s' % (app, model) as MyModel
Als nächstes muss ich natürlich noch eine Möglichkeit finden, alle Felder des Models mit Namen auszulesen… auch da habe ich keinen blassen Schimmer, wie das gehen soll… Ich hab mich in den Django Admin Dateien schon mal was umgesehen und die Funktion "get_model" gefunden, weiß aber noch nicht genau, was sie macht. Ich hoffe, auch hier kann mir jemand erklären, wie ich so etwas machen kann.
Mein Template soll am Ende also etwa so aussehen, wobei entries die Datensätze aus MyModel.objects.all() ist und fields die Felder des Models sind (und demnach entry.fields der Inhalt für das Feld):
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<{{app}}>
{% for entry in entries %}
<{{model}}>
{% for field in entry.fields %}
<{{field.name}}>{{entry.field}}</{{field.name}}>
{% endfor %}
</{{model}}>
{% endfor %}
</{{app}}>
Pascal[/code]