2012-12-27 45 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