without - modelform django




Django: usando ModelForm para editar una entrada de base de datos existente (2)

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)

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

También es posible y un poco más corto:

instance = MyModel.objects.get(whatever)
form = MyModelForm(request.POST or None, instance=instance)
...