属性错误对象没有属性cleaned_data

PK1*_*K10 1 python mysql django

我的 views.py 鳕鱼:

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))
Run Code Online (Sandbox Code Playgroud)

我想在我的模型中更新“product_details”列值,其中资产代码正是用户输入的内容。但是当我提交按钮时出现错误。

错误信息:

AttributeError 对象没有属性“cleaned_data”django

Bur*_*lid 5

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()})
Run Code Online (Sandbox Code Playgroud)

  • 不,这是正确的答案。`cleaned_data` 在调用 `is_valid` 之前不存在,并且在不调用它的情况下将其检查为布尔值将返回 `True`,但不会创建 `cleaned_data`。 (2认同)