Как я могу получить свой идентификатор объекта из общих обновлений для использования в моей форме в Django 1.1 - PullRequest
3 голосов
/ 15 марта 2012

Я использую общий вид для обновления объекта.

Я использую форму:

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 в моей форме неизвестен .... Как я могу получить мой идентификатор объекта запроса для использования в моей форме?

Thx

РЕДАКТИРОВАТЬ: ЗДЕСЬ ошибка:

глобальное имя 'object_id' не определено

1 Ответ

5 голосов
/ 15 марта 2012

Ваша ошибка исходит из этой строки:

vehiprepa = get_object_or_404(VehiPrepa,pk=object_id)

В форме модели у вас нет object_id.

Чтобы решить эту проблему, обратитесь к документации ;которая гласит:

Кроме того, экземпляр формы модели, связанный с объектом модели, будет содержать атрибут self.instance, который предоставляет методам формы модели доступ к этому конкретному экземпляру модели.

Из этого мы понимаем, что связанный экземпляр находится в self.instance.Итак, в вашей модельной форме вам нужно

vehiprepa = self.instance

вместо строки get_object_or_404.

...