Подтвердить что ты не робот

Django: использование ModelForm для редактирования существующей записи базы данных

Я создал класс ModelForm, чтобы иметь возможность создавать и редактировать записи в базе данных. Однако создание новых записей хорошо работает, однако я не знаю, как использовать ModelForms для редактирования/обновления существующей записи. Я могу создать экземпляр ModelForm с экземпляром базы данных, используя:

form  = MyModelForm(instance=MyModel.objects.get(pk=some_id))

Однако, когда я передаю это шаблону и редактирую поле, а затем попытаюсь его сохранить, я создаю новую запись базы данных вместо обновления "some_id"?

Edit1: Это мое мнение

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
4b9b3361

Ответ 1

Помните, что вам нужно использовать параметр instance при создании экземпляра в POST.

instance = MyModel.objects.get(whatever)
if request.method == "POST":
    form = MyModelForm(request.POST, instance=instance)
    ...

else:
    form = MyModelForm(instance=instance)

Ответ 2

Также возможно и немного короче:

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