Рассчитать пользовательский ввод из формы таблицы в Django - PullRequest
0 голосов
/ 09 июля 2019

Я все еще учусь создавать Inventory Management с помощью 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__'

Как мне подойти к этому?

В настоящее время форма сохраняет только данные из (пользовательский ввод) в базу данных.не рассчитать их.

1 Ответ

0 голосов
/ 09 июля 2019

Вы можете поместить свою логику в функцию 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
...