我仍在学习如何使用Django2创建库存管理。
我有一些模型可以接收用户输入,并使用Django将其保存到数据库中。
我想计算并从填写表单的用户那里获得总价值。并希望在templates.html
线索:
我需要从以下位置获取确切的总价格:
total_product
*
per_unit_price
,并在subtotal_unit_price
中显示结果。
per_unit_price
*
profit_precent
(如果可能,以%表示)除以100 %
,然后与per_unit_price
相加/加起来,结果在新字段中,该字段可以为profit_bruto
。
profit_bruto
*
per_unit_product
,结果将在sell_price
中。
解决这个问题的正确方法是什么?
我对此documentation感到困惑。
models.py
"Stock Input"
class InputStock(models.Model):
number_product = models.AutoField(primary_key=True)
product_name = models.CharField(max_length=30)
total_product = models.IntegerField()
per_unit_product = models.IntegerField(blank=True)
per_unit_price = models.DecimalField(max_digits=14, decimal_places=2)
subtotal_unit_price = models.DecimalField(max_digits=14, decimal_places=2)
profit_percent = models.IntegerField()
sell_price = models.DecimalField(max_digits=14, decimal_places=2)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.nama_product
views.py
@login_required()
def InputStock(request):
form = InputStockForm(request.POST)
if request.method == 'POST':
if form.is_valid():
form.save()
form = DaftarBarangForm()
return render(request, 'input_data.html', {'form':form})
forms.py
class InputStockForm(forms.ModelForm):
class Meta:
model = InputStock
fields = '__all__'
我该如何处理?
当前,该表单仅将数据(用户输入)保存到数据库中。不计算它们。
答案 0 :(得分:0)
您可以将逻辑放在form.save()函数中。就像这样
class InputStockForm(forms.ModelForm):
class Meta:
model = InputStock
fields = '__all__'
def save(self, commit=True):
instance = super().save(commit=False)
# your calculate
instance.subtotal_unit_price = instance.total_product * instance.per_unit_price
profit_bruto = instance.per_unit_price * instance.profit_precent
instance. sell_price = profit_bruto * instance.per_unit_product
if commit:
instance.save()
return instance