2012-03-15 4 views
3

Я использую общий вид для обновления объекта.Как я могу получить свой идентификатор объекта из общих представлений обновления для использования в моей форме в django 1.1

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

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

EDIT: Вот ошибка:

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

+0

Пожалуйста, отправьте сообщение об ошибке traceback – jpic

ответ

5

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

vehiprepa = get_object_or_404(VehiPrepa,pk=object_id)

В вашей типовой форме вы d у него нет object_id.

Для решения этой проблемы см. documentation; в котором говорится:

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

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

vehiprepa = self.instance

вместо get_object_or_404 линии.

+0

Thx много ... это работает ... я забыл посмотреть эту страницу .. thx из Франции;) – laurent

+0

Thx man, great post :) – Ron