【问题标题】:How can i get my object id from a generic update views to use in my form in django 1.1如何从通用更新视图中获取我的对象 ID 以在 django 1.1 中的表单中使用
【发布时间】:2012-04-01 02:17:49
【问题描述】:

我正在使用通用视图来更新对象。

我正在使用表单:

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

我正在使用这个通用视图:

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

但我有一个错误,因为我的表单上的 object_id 是未知的...... 如何获取我的请求对象 ID 以在我的表单中使用?

谢谢

编辑:这里是错误:

未定义全局名称“object_id”

【问题讨论】:

    标签: django django-generic-views object-identity


    【解决方案1】:

    您的错误来自这一行:

    vehiprepa = get_object_or_404(VehiPrepa,pk=object_id)

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

    要解决这个问题,请参考documentation;其中指出:

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

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

    vehiprepa = self.instance

    而不是get_object_or_404 行。

    【讨论】:

    • 谢谢很多...它工作...我忘了看这个页面..来自法国的谢谢 ;)
    猜你喜欢
    • 2021-07-23
    • 2020-07-04
    • 2019-07-19
    • 2012-06-30
    • 2022-01-19
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    相关资源
    最近更新 更多