3

ジェネリックビューを使用してオブジェクトを更新しています。

私はフォームを使用しています:

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'が定義されていません

4

1 に答える 1

5

エラーは次の行から発生します。

vehiprepa = get_object_or_404(VehiPrepa,pk=object_id)

モデルフォームには、はありませんobject_id

この問題を解決するには、ドキュメントを参照してください。どの州:

また、モデルオブジェクトにバインドされたモデルフォームインスタンスには、モデルフォームメソッドがその特定のモデルインスタンスにアクセスできるようにするself.instance属性が含まれます。

これから、バインドされたインスタンスがにあることがわかりますself.instance。したがって、モデル形式では必要です

vehiprepa = self.instance

線の代わりにget_object_or_404

于 2012-03-15T15:17:36.677 に答える