Я пытаюсь создать простое приложение для инвентаризации, но у меня возникают проблемы с логикой пополнения запасов, например, если у меня новая акция куплена по цене, отличной от первой, которую я хочу, просто получить среднюю цену для всей акции вОболочка работает нормально, но когда я перехожу к своей форме, я всегда получаю ввод формы вместо желаемого значения, после некоторого исследования я обнаружил, что я получаю данные экземпляра, используя request.POST.get и даже до сохранения количества = элемента.количество!!мой вопрос сейчас заключается в том, как я могу получить свой ввод и экземпляр отдельно
##models
class Supply(models.Model):
name = models.CharField(max_length=100, unique=True)
quantity = models.PositiveIntegerField()
price = models.DecimalField(max_digits=11, decimal_places=2)
created = models.DateField(auto_now_add=True)
last_modefied = models.DateField(auto_now=True)
def __str__(self):
return self.name
##form
class SupplyForm(forms.ModelForm):
class Meta:
model = Supply
fields = ["name", "quantity", "price"]
#view
def add_supply(request):
form = SupplyForm()
if request.POST:
# getting form input data
name = request.POST.get("name")
quantity = request.POST.get("quantity")
price = request.POST.get("price")
# getting Supply instance
item = Supply.objects.get(name=name)
# instantiating the form
form = SupplyForm(request.POST, instance=item)
if form.is_valid:
# Logic
old_supply = item.quantity * item.price
new_supply = int(quantity) * int(price)
new_quantity = item.quantity + int(quantity)
item.price = (old_supply + new_supply) / new_quantity
item.quantity = new_quantity
form.save()
return redirect("project_list")
return render(request, "restock.html", {"form": form})