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
Ответы
Ответ 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)
...