Я уже писал об этой проблеме, но до сих пор не нашел решения, поэтому надеюсь, что в этот раз мне повезет больше.
У меня есть форма, которая принимает введенные данные пользователем. На другой странице я создаю идентичную форму, которую заполнил пользователь (предварительно заполненный этой информацией) для целей редактирования. Пользователи перейдут на эту страницу, чтобы отредактировать информацию, которую они уже ввели. Моя проблема в том, что она не перезаписывает экземпляр.
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, заключается в том, что я хочу запретить пользователям вводить одну и ту же форму дважды (до этапа редактирования, в начальном представлении ввода).
Есть идеи?
РЕДАКТИРОВАТЬ: обратите внимание, что «а» относится к сеансу, который включает в себя раскрывающийся список всех доступных экземпляров. Это перенесено будет указывать, какой экземпляр пользователь хочет редактировать.
`