Локальная переменная 'product' ссылается перед присвоением ? в Django
Я столкнулся с проблемой и пока не могу найти решение. До сих пор все работало. но теперь выдает ошибку. не знаю, как это исправить. пожалуйста, нужна помощь.
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})
Все работает нормально.После добавления продукта несколько раз возникала ошибка. как я могу избавиться от этой ошибки.пожалуйста, помогите, буду признателен.
Переменная product определяется только в том случае, если форма действительна. Вы можете либо установить значение по умолчанию для product вне оператора if, либо переместить весь код, включающий данные из формы, внутрь оператора if.
Это потому, что переменная product не установлена, если вы не заходите внутрь if product_form.is_valid():,
вы могли бы просто установить значение по умолчанию перед этим оператором if, чтобы исправить ошибку.
Надеюсь, это помогло.