从 Django 中的 Tabel Form 计算用户输入



我仍在学习如何使用 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.

解决这个问题的正确方法是什么?

我被这个文档困住了。

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__'

我该如何处理?

目前,表单仅将(用户输入)中的数据保存到数据库中。 不计算它们。

你可以把你的逻辑放在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

最新更新