Вычислить пользовательский ввод из формы таблицы в Django

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

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

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


person iColdPlayer    schedule 09.07.2019    source источник
comment
Возможный дубликат Как получить значение из поля формы в django каркас?   -  person Zaraki Kenpachi    schedule 09.07.2019


Ответы (1)


вы можете поместить свою логику в функцию 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
person baskershu    schedule 09.07.2019
comment
Я пробовал как ваше предложение. но как определить процентный метод? например, поле profit_percent = models.IntegerField() должно быть в процентах, как я могу это сделать? - person iColdPlayer; 10.07.2019