2012-02-16 5 views
0

Я создаю форму на одной странице, а затем на другой странице я пытаюсь вытащить форму (заполненную данными, сохраненными в ней уже) и хотел бы внести в нее изменения так что, когда я его сохраняю, он перезаписывает экземпляр вместо создания другого.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) 

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

Любые идеи?

ответ

0

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

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

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) 
+0

в соответствии с этим, хотя, что я уже делаю должен работать ... – JohnnyCash

+0

Хмм, то кажется, что рк теряется в процессе. Не сохраняет (force_update = True) работу? – Jingo

+0

нет, что все еще не работает :( – JohnnyCash

Смежные вопросы