如何将参数(从窗体)传递给Model方法并返回计算

时间:2019-04-07 03:58:57

标签: python django function arguments

我正在学习Python / Django,并且在理解如何调用/传递参数到Models方法中时遇到一些麻烦

在我的情况下,我从Form中获取一个Decimal输入,将其传递给我的模型方法,然后根据Model在Sqlite3数据库中已有的数据重新计算一个新值

并将其显示到我的模板

如果我在模型方法中删除变量参数并直接在模型方法中乘以常量,则代码可以正常工作并在模板中呈现良好效果

型号:

res = mod.fit(start_params=np.array([0.4,0.4,1,1]))

表格:

from django.db import models


class Product(models.Model):
    name = models.CharField(max_length=30)
    price = models.DecimalField(max_digits=5, decimal_places=2)

    def __str__(self):
        return self.name

    def n_price(self, newprice):
        n_price = self.price * newprice
        return n_price

观看次数:

from django import forms

class MultiForm(forms.Form):
    data = forms.DecimalField(max_digits=5, decimal_places=2)

模板

...```

from django.shortcuts import render
from .models import Product
from .forms import MultiForm

def multi(request):
    list = Product.objects.all()
    if request.method == "POST":
        form = MultiForm(request.POST or None)
        if form.is_valid():
            data = request.POST.get('model')

    p = Product.n_price()
    p(data) 

    return render(request, 'viewinventory/multi.html', {'form': form, 'list': list, 'data': data})

{%endblock%}

    {% block content %}
<h2>New price</h2>
<form method="POST" class="price-form">
    {% csrf_token %}
    {{ form }}
    <button type="submit" class="save btn btn-default">Save</button>
</form>

{%endfor%}

...```

1 个答案:

答案 0 :(得分:0)

您正在将表格(而非数字)传递给导致问题的函数。您需要传递数据,因此将Product.n_price(form)行更改为Product.n_price(form.data),以从“命名空间”表单中获取数字数据。