2013-05-16 2 views
0

Для GET form_page.html,
У моего представления есть конкретная функция my_id для создания формы.
(то есть, когда пользователь впервые видит этот form_page, экземпляр уже создан для него,
, и он на самом деле изменить его в первый раз)django с использованием конкретного экземпляра для объекта ModelForm

form = MyForm(instance=MyClass.objects.get(pk=my_id)) 

Для POST form_page.html,
Я d хотел бы обновить один и тот же экземпляр, используя тот же my_id.

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

Как мне вставить этот my_id, чтобы я мог использовать его для обновления одного и того же экземпляра?

ответ

1

Обычно я держу идентификатор в URL

url(r'^(?P<id>[\d]+)/edit/$', "edit"), 


def edit(request, id=None, **kwargs): 
    if id: 
     instance = get_object_or_404(Model, pk=id) 
    else: 
     instance = Model() 
    form = ModelForm(request.POST or None, request.FILES or None, instance=instance) 

    if request.method == 'POST' and form.is_valid(): 
     instance = form.save() 
     return redirect(instance) 

    return TemplateResponse(request, 'edit.html', {'form': form, }) 
Смежные вопросы