2012-12-27 4 views
1

나는이 상황이 :Django - UpdateView를 통해 ModelForm에 객체를 전달하는 방법은 무엇입니까?

가 klient을 편집하려면를 UpdateView가 사용됩니다

url(r'^klient_change/(?P<pk>\d+)/$', KlientUpdateView.as_view(), name='url_klient_change'),

업데이트보기 개체를 업데이트를 돌봐, 그것은 KlientUpdateForm

class KlientUpdateView(UpdateView): 
    form_class = KlientUpdateForm 
    model = Klient 
    template_name = 'forms/klient_zmenit.html' 

문제를 사용 그게 내 자신의 저장 방법을 사용하여 기존의 개체를 업데이 트해야합니다, 그리고 klient object을 얻고 더 많은 일을 (내 저장 방법은 없습니다 이 예에서 완료되면 더 많은 일을합니다).

class KlientUpdateForm(ModelForm): 
    class Meta: 
     model = Klient 

    # This method creates and saves a database object from the data bound to the form. 
    def save(self): 
     #self.cleaned_data obsahuje data z formulare 
     data = self.cleaned_data 
     klient = get_object_or_404(Klient, klient_id =self.request.pk) 
     Klient.objects.filter(klient_id = self.request.pk).update(nazev=data['nazev'], telefon=data['telefon'],) 

     return klient 

modelForm에 URL로부터 pk가있는 particualr 오브젝트를 어떻게 얻을 수 있습니까? 이것을 할 수 있습니까? ModelForm은 (는) request에 대해 아는 것이 없습니다. 내 생각은 가능한 updateview에있는 객체를 얻는 것이었지만 그걸 에 전달하는 방법을 모른다.

답변

2

KlientUpdateForm.save에서 개체는 self.instance이어야합니다.

+0

예! 네가 옳아. 'self.instance.pk'는 원하는 기본 키를 반환합니다! – Boun

관련 문제