Я уже писал об этой проблеме, но до сих пор не нашел решения, поэтому надеюсь, что на этот раз мне повезет больше.Django Сохранение записанных данных формы
У меня есть форма, которая принимает введенные пользователем данные. На другой странице я создаю ту же форму, которую пользователь заполнил (предварительно заполненную этой информацией) для целей редактирования. Пользователи придут на эту страницу, чтобы ИЗМЕНИТЬ информацию, которую они уже ввели. Моя проблема заключается в том, что она не перезаписывает экземпляр.
def edit(request):
a = request.session.get('a', None)
if a is None:
raise Http404('a was not found')
if request.method == 'POST':
form = Name_Form(request.POST, instance=a)
if form.is_valid():
j = form.save(commit=False)
j.save()
else:
form = Name_Form(instance = a)
Для этой формы я использую «unique_together» для некоторых значений. Я также призываю `{{form.non_field_errors}} в шаблоне.
Что происходит, когда я вношу изменения в вид редактирования, если изменения полей связаны с изменениями, определенными в «unique_together», тогда возвращается ошибка, сообщающая мне, что экземпляр уже существует. В противном случае он сохраняет новый экземпляр. Это НЕ НАРУШЕНИЕ.
Обратите внимание, что причина, по которой я использую unique_together, заключается в том, что я хочу, чтобы пользователи сначала не вводили одну и ту же форму дважды (до этапа редактирования, в исходном представлении ввода).
Любые идеи?
EDIT: обратите внимание, что «a» относится к сеансу, который включает раскрывающееся поле всех доступных экземпляров. Этот перенос будет указывать, какой экземпляр пользователь хочет изменить. `
В предыдущей точке зрения, у вас сохранен «а» в базу данных, прежде чем добавить его к сессии? Что произойдет, если вы напечатаете a.id (я подозреваю, что это может быть «Нет») – Alasdair
да, они сохранены в базе данных .. и когда я печатаю, на самом деле дает мне идентификатор .. не только это, но и успешно предварительно заполняя форму всеми полями a, поэтому она определенно переносит ее. – JohnnyCash
«a» ссылается на раскрывающийся список в другом представлении, которое пользователь выберет, который укажет экземпляр WHICH, который они хотят отредактировать. – JohnnyCash