Я новичок в Django, но у меня, похоже, почти идентичный код, работающий на другом сайте. Я могу обновить запись в оболочке Django, но в view.py тот же код настаивает на ВСТАВКЕ новой записи при запуске этой формы.
- У меня есть объект "DisciplineEvent" в модели. Я позволил Django создать поле «id» для первичного ключа. Я вижу, что столбец "id" int был создан с auto_increment в MySQL
- Форма DisciplineEventEntryForm создается из объекта модели "DisciplineEvent".
- Для редактирования записи заполняется форма ввода, и pk помещается в скрытое поле с именем «id», которое представляется вместе с данными POST.
Итак, соответствующая часть view.py такова:
if request.method == 'POST':
incidentId = request.POST['id']
editedEvent = DisciplineEvent.objects.get(pk=int(incidentId))
form = DisciplineEventEntryForm(request.POST, instance=editedEvent)
form.save()
variables = Context({
'account': account,
'date': request.POST['event_date'],
'description': request.POST['incident_description'],
'incident_id':incidentId,
})
template = get_template('disciplineform_confirm_entry.html')
output = template.render(variables)
response = HttpResponse(output)
return response
Я думал, что это вызовет соответствующую запись, сохранит в ней новые данные формы и ОБНОВИТ запись. Вместо этого он создает новую запись со всеми данными и увеличенным первичным ключом.