Olá Gustavo! Tudo bem?
Quando o campo "preço" é deixado em branco, ele pode estar sendo tratado de forma diferente, o que impede a soma da quantidade. Vamos ajustar isso.
No trecho de código onde você verifica e atualiza o preço, tente garantir que a lógica não dependa do campo "preço" para atualizar a quantidade. Veja a sugestão abaixo:
def adicionar_produto(request):
if request.method == 'POST':
form = EstoqueForm(request.POST)
if form.is_valid():
produto_form = form.cleaned_data['produto']
quantidade_form = form.cleaned_data['quantidade']
preco_form = form.cleaned_data.get('preco') # Use get para evitar KeyError
fornecedor_form = form.cleaned_data['fornecedor']
descricao_form = form.cleaned_data['descricao']
try:
# Se o produto já existir no estoque, adicionar a quantidade informada
estoque_produto = Estoque.objects.get(produto=produto_form)
if estoque_produto.quantidade is not None:
estoque_produto.quantidade += quantidade_form
# Atualizar o preço apenas se ele for fornecido e diferente do atual
if preco_form is not None and preco_form != estoque_produto.preco:
estoque_produto.preco = preco_form
estoque_produto.fornecedor = fornecedor_form
estoque_produto.descricao = descricao_form
estoque_produto.save()
except Estoque.DoesNotExist:
# Se o produto não existir, criar um novo registro
form.save()
return redirect('mostrar_estoque')
else:
form = EstoqueForm()
return render(request, 'adicionar_produto.html', {'form': form, 'produto_choices': produto_choices})
Certifique-se de que o campo "preço" no seu formulário pode ser nulo, tanto no modelo quanto no formulário. Isso evitará problemas ao tentar acessar ou comparar valores nulos.
Espero ter ajudado e bons estudos!
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!