2012-12-27 71 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這個對象,這是可能的,但我不知道,如何將它傳遞給save methodmodelform

回答

2

KlientUpdateForm.save中,您的對象應爲self.instance

+0

是的!你是對的。 'self.instance.pk'返回所需的主鍵! – Boun