我遇到这种情况:
要编辑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的特定对象?是否有可能做到这一点? ModelForm
对request
一无所知。我的想法是让updateview
中的对象有可能,但我不知道,如何将其传递给save method
的{{1}}。
答案 0 :(得分:2)
在KlientUpdateForm.save
中,您的对象应该显示为self.instance
。