Django - 如何通过UpdateView将对象传递给ModelForm?

时间:2012-12-27 10:49:06

标签: django django-models

我遇到这种情况:

要编辑klient,请使用UpdateView

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

Update View负责更新对象,它使用KlientUpdateForm

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

问题是,我需要使用自己的保存方法更新现有对象,该方法获取klient object并执行更多操作(在此示例中,我的保存方法不完整,它可以执行更多操作)。 / p>

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的特定对象?是否有可能做到这一点? ModelFormrequest一无所知。我的想法是让updateview中的对象有可能,但我不知道,如何将其传递给save method的{​​{1}}。

1 个答案:

答案 0 :(得分:2)

KlientUpdateForm.save中,您的对象应该显示为self.instance