Existuje nejaký jednoduchý spôsob, ako zmeniť inštanciu modelu modelu Django po jeho inicializácii?
Napríklad nasledovné by vopred vyplnilo formulár v šablóne obsahom, ktorý je momentálne v db pre objekt s ID 1:
form = exampleModelForm(instance = Model.objects.get(pk=1)
Toto tiež uloží príslušný objekt, keď sa volá save (), a nie vytvárať nový.
Ak to vytvorí nový objekt a nevyplní formulár v šablóne, postupujte nasledovne:
form = exampleModelForm()
Keď vraciam prázdny formulár z inéhometóda, potom by som jej chcel po vytvorení priradiť inštanciu a upraviť objekt tak, aby sa dal uložiť a šablóna je vopred vyplnená hodnotami, ktoré existujú v db. Chcem niečo také, ale Zdá sa, že to, čo som „vyskúšal, nefunguje:
form = methodThatGetsForm(somearg)
form.instance = ExampleModel.objects.get(pk = getId(somearg))
Existuje jednoduchá funkcia, ktorá mi tu chýba?
odpovede:
2 pre odpoveď č. 1Toto som NESTESTOVAL, ale zaujímalo by ma, či môžete znova inicializovať nový formulár s vrátenými údajmi formulára a inštanciou ako novým objektom.
form = methodThatGetsForm(somearg)
new_form = ExampleModelForm(form.cleaned_data, instance=ExampleModel.objects.get(pk=getID(somearg)))
new_form.save()
Ak nie, mal by existovať spôsob, ako získať údaje ako slovník párov kľúč / hodnota pre polia z form
vrátil, pomocou ._meta
údaje. Myslím, že ak pošlete tento slovník do formulára init, priradí tieto hodnoty objektu inštancie, rovnako ako jeho odoslanie request.POST
.