如何从通用更新视图中获取我的对象ID,以便在django 1.1中以我的形式使用

lau*_*ent 3 django django-generic-views object-identity

我使用通用视图来更新对象.

我使用的形式:

class VehiPrepaClientForm(ModelForm):




class Meta:
    model = VehiPrepa
    fields = ('date_dem_prepa','carburant','ty_carburant')



def clean(self):
    cleaned_data = self.cleaned_data
    data = self.cleaned_data['date_dem_prepa']

    vehiprepa = get_object_or_404(VehiPrepa,pk=object_id)
    if data :

        vehiprepa.demande_prepa = 1
        vehiprepa.save()
        date_in = vehiprepa.date_in
        delta = data - date_in
        date_dem = date_in + delta 
        if delta.days < 2 :
            raise forms.ValidationError("Veuillez entrez une date au dela du : %s" %(date_dem) )

        if data.weekday()>= 5 :

            raise forms.ValidationError("La date choisie n'est pas valide, cela tombe un weekend")    

        #test si date demande sup a date_in et si pas samedi, ni dimanche, et si pas plus 32 vehi ce jour la



    return cleaned_data
Run Code Online (Sandbox Code Playgroud)

我使用这个通用视图:

def vehiprepa_update (request, vehiprepa_id):

user= request.user

login = user.username
vehiprepa = get_object_or_404(VehiPrepa,pk=vehiprepa_id)

url_template_base = "base_client_washtest.html"


    response = create_update.update_object(
            request,
            form_class = VehiPrepaClientForm, 
            object_id = vehiprepa_id,
            post_save_redirect = "/washtest/vehiprepa_list/0/",
            template_name = 'washtest/vehiprepa_update.html',
            template_object_name = 'object',
            extra_context = {"url_template_base":url_template_base,"login":login,"vehiprepa":vehiprepa},)

return response
Run Code Online (Sandbox Code Playgroud)

但是我有一个错误,因为我的表单上的object_id是未知的....我怎样才能在我的表单中使用我的请求对象id清理?

谢谢

编辑:错误:

全局名称'object_id'未定义

Bur*_*lid 5

您的错误来自此行:

vehiprepa = get_object_or_404(VehiPrepa,pk=object_id)

在您的模型表单中,您没有object_id.

要解决此问题,请参阅文档 ; 其中说明:

此外,绑定到模型对象的模型表单实例将包含self.instance属性,该属性为模型表单方法提供对该特定模型实例的访问.

由此我们了解绑定的实例是在self.instance.所以,在你需要的模型表格中

vehiprepa = self.instance

而不是get_object_or_404线.