Джанго Перезаписать существующий экземпляр в таблице - PullRequest
0 голосов
/ 17 февраля 2012

Я создаю форму на одной странице, затем на другой странице я пытаюсь извлечь форму (заполненную уже сохраненными в ней данными) и хотел бы внести в нее изменения, чтобы при ее сохранениион перезаписывает экземпляр вместо создания другого.

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 )

Это код, который у меня есть для представления «редактирование формы». Когда я открываю эту страницу, форма успешно заполняется всеми данными.Однако при внесении изменений и сохранении он не перезаписывает существующий экземпляр, а создает новый.

Есть идеи?

1 Ответ

0 голосов
/ 17 февраля 2012

Посмотрите здесь: https://docs.djangoproject.com/en/dev/ref/models/instances/#how-django-knows-to-update-vs-insert Я думаю, что это может помочь вам.

Обновление: Как насчет того, чтобы попробовать более "явный" способ Предположим, id_of_Name хранит только идентификатор или pk вашей модели, которую вы хотите редактировать (я предполагаю, что модель называется «Имя»). Затем просто получите id / pk из сеанса, чтобы запросить у вашей базы данных экземпляр модели. Также попробуйте напрямую вызвать метод сохранения в форме.

def edit(request):

   id_of_Name = request.session.get('a',  None)

   if id_of_Name is None:
       raise Http404('id_of_Name was not found')
   instance = Name.objects.get(pk=id_of_Name)
   if request.method == 'POST':
       form = Name_Form(request.POST, instance=instance)
       if form.is_valid():
           form.save()
   else:
       form = Name_Form( instance = instance )
...