2013-11-27 5 views
0

мой views.py трески:объекта Атрибут Ошибка не имеет атрибута cleaned_data

def update_details(request): 
    if request.method == "POST": 
      form = UpdateDetailsForm(request.POST) 
      if form.is_valid: 
       asset_code=form.cleaned_data['asset_code1'] 
       fd=form.cleaned_data['product_details'] 
       verifications = Verification.objects.filter(asset_code__exact=asset_code) 
       verifications.update(product_details=fd) 

    return render_to_response('update_details.html', 
       {'form':UpdateDetailsForm(),}, 
       context_instance=RequestContext(request)) 

Я хочу, чтобы обновить значение столбца «product_details» в моей модели, где код актива именно то, что пользователь ввел. Но я получаю сообщение об ошибке при отправке кнопки.

Сообщение об ошибке:

объект AttributeError имеет Джанго без атрибута 'cleaned_data'

+0

дубликата http://stackoverflow.com/questions/4308527/django-model-form-object-has-no-attribute-cleaned-data – Chandan

+0

@Chandan - не дубликат , Исключение составляет одно и то же, но причина другая. –

+0

Мои извинения. Я понял свою ошибку, увидев ответ. – Chandan

ответ

3

form.is_valid является метод; Вы должны назвать его:

from django.shortcuts import render, redirect 

def update_details(request): 
    if request.method == "POST": 
      form = UpdateDetailsForm(request.POST, request.FILES) 
      if form.is_valid(): 
       asset_code=form.cleaned_data['asset_code1'] 
       fd=form.cleaned_data['product_details'] 
       verifications = Verification.objects.filter(asset_code__exact=asset_code) 
       # filter returns a list, so the line below will not work 
       # you need to loop through the result in case there 
       # are multiple verification objects returned 
       # verifications.update(product_details=fd) 
       for v in verifications: 
        v.update(product_details=fd) 

       # you need to return something here 
       return redirect('/') 
      else: 
       # Handle the condition where the form isn't valid 
       return render(request, 'update_details.html', {'form': form}) 

    return render(request, 'update_details.html', {'form':UpdateDetailsForm()}) 
+0

Ошибка не в том, что – aIKid

+1

Нет, это правильный ответ. 'cleaned_data' не существует до тех пор, пока не будет вызвано' is_valid', и проверка его как логического значения без его вызова приведет к возврату 'True', но не создаст' cleaned_data'. –

Смежные вопросы