2013-05-16 2 views
0

GET의 경우 form_page.html,
내 뷰에는 양식을 인스턴스화하는 특정 my_id가 있습니다.
는 (사용자가 처음이 form_page을 볼 때 예는, 인스턴스는 이미 그를 위해
을 생성 그는 실제로 처음 그것을 수정하는 것) POST form_page.html를 들어django는 ModelForm 객체의 특정 인스턴스를 사용합니다.

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

,
나 ' 동일한 my_id를 사용하여 동일한 인스턴스를 업데이트하려고합니다.

나는이 my_id에 대해 별도의 숨김 필드를 가질 수 있으며 사용자가 양식을 POST 할 때 가져올 수 있다고 생각합니다.
그러나 이것은 내가 예상했던 것만 큼 쉬운 것은 아닙니다.

어떻게하면이 my_id를 삽입하여 동일한 인스턴스를 업데이트 할 수 있습니까?

답변

1

보통 나는 URL의 ID를 유지

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, }) 
관련 문제