简体   繁体   中英

local variable 'product' referenced before assignment ? in Django

I am facing the issue I can't find the solution yet. It's working so far. but now showing an error. don't know how to fix this. please need help.

views.py

 def add_product(request):
product_form = ProductForm()
product_variant_images_form = ProductVariantsImagesForm()

if request.method == 'POST':
    product_form = ProductForm(request.POST)
    product_variant_images_form = ProductVariantsImagesForm(request.POST,request.FILES)

    if product_form.is_valid():
        print(request.POST)
        product = product_form.save(commit=False)
        vendor = CustomUser.objects.filter(id=request.user.id)
        product.vendoruser = vendor[0]

        product.save()




    vendor = CustomUser.objects.get(id=request.user.id)
    product_variant = ProductVariants()
    product_variant.product_id = product ###ERROR SHOWING IN THIS LINE
    product_variant.vendoruser = vendor
    
    product_variant.price = request.POST.get('price')
    product_variant.initial_stock = request.POST.get('initial_stock')
    product_variant.weight_of_product = request.POST.get('weight_of_product')            
    product_variant.save()


            
        
    return redirect('vendor:inventory_display')
     


else:
    productform = ProductForm()
    productvariantsform = ProductVariantsForm()
    product_variant_images_form = ProductVariantsImagesForm()

return render(request, 'vendor/add_product.html',
              {'productform': productform,'product_variant_images_form':product_variant_images_form, 
               'productvariantsform': productvariantsform})

It's working fine.After product added multiple time the error occurred. how can I get rid of this error.please some help much appreciated.

Its because your product variable isn't set if you don't go inside if product_form.is_valid(): , you could just set a default value before this if statement in order to fix your error.

I hope this helped.

The product variable is only defined if the form is valid. Either you can set a default value for product outside of the if statement or you could move all of the code involving data from the form inside of the if statement.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM