widgets - Django: usando ModelForm para editar una entrada de base de datos existente
form fields django template (2)
He creado una clase ModelForm para poder crear y editar entradas de base de datos. Crear nuevas entradas funciona bien, sin embargo, no sé cómo usar ModelForms para editar / actualizar una entrada existente. Puedo instanciar un ModelForm con una instancia de base de datos usando:
form = MyModelForm(instance=MyModel.objects.get(pk=some_id))
Sin embargo, cuando paso esto a una plantilla y edito un campo y luego trato de guardarlo, ¿creo una nueva entrada de base de datos en lugar de actualizar "some_id"?
Edit1: Esta es mi opinión
def editData(request):
if request.method == ''POST'':
form = MyModelForm(request.POST, request.FILES)
if form.is_valid():
editedEntry = form.save() # <-- creates new entry, instead of updating
Recuerde que todavía necesita usar el parámetro de instance
cuando cree una instancia en POST.
instance = MyModel.objects.get(whatever)
if request.method == "POST":
form = MyModelForm(request.POST, instance=instance)
...
else:
form = MyModelForm(instance=instance)
También es posible y un poco más corto:
instance = MyModel.objects.get(whatever)
form = MyModelForm(request.POST or None, instance=instance)
...