/ / django Modellforminstanz ändern - Python, Django

Instanz des Django-Modellwechsels - Python, Django

Gibt es eine einfache Möglichkeit, die Instanz eines Django-Modellformulars nach seiner Initialisierung zu ändern?

Im Folgenden wird beispielsweise das Formular in einer Vorlage mit dem Inhalt in der Datenbank für das Objekt mit der ID 1 vorab ausgefüllt:

form = exampleModelForm(instance = Model.objects.get(pk=1)

Dadurch wird auch das relevante Objekt gespeichert, wenn save () aufgerufen wird, anstatt ein neues zu erstellen.

Wo dies ein neues Objekt erstellt und das Formular in der Vorlage nicht vorab ausfüllt:

form = exampleModelForm()

Da ich ein leeres Formular von einem anderen zurückschickeMethode möchte ich dann eine Instanz zuweisen, nachdem es erstellt wurde, und das Objekt so ändern, dass es gespeichert werden kann und die Vorlage mit den Werten gefüllt ist, die in der Datenbank vorhanden sind. Ich möchte so etwas aber Was ich versucht habe, scheint nicht zu funktionieren:

form = methodThatGetsForm(somearg)
form.instance = ExampleModel.objects.get(pk = getId(somearg))

Gibt es eine einfache Funktion, die mir hier fehlt?

Antworten:

2 für die Antwort № 1

Ich habe dies NICHT getestet, aber ich frage mich, ob Sie ein neues Formular mit den zurückgegebenen Formulardaten und der Instanz als neuem Objekt neu initialisieren können.

form = methodThatGetsForm(somearg)
new_form = ExampleModelForm(form.cleaned_data, instance=ExampleModel.objects.get(pk=getID(somearg)))
new_form.save()

Wenn nicht, sollte es eine Möglichkeit geben, die Daten als Wörterbuch der Schlüssel / Wert-Paare für die Felder aus dem zu erhalten form zurückgegeben, mit ihm "s ._meta Daten. Ich denke, wenn Sie dieses Wörterbuch an das Formular init senden, werden diese Werte dem Instanzobjekt zugewiesen, genau wie beim Senden request.POST.