首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将参数(从表单)传递给Model方法并返回计算

如何将参数(从表单)传递给Model方法并返回计算
EN

Stack Overflow用户
提问于 2019-04-07 11:58:57
回答 1查看 89关注 0票数 0

我正在学习Python/Django,我在理解如何调用参数/将参数传递给模型方法时遇到了一些问题

在我的示例中,我从表单中获取Decimal输入,将其传递给my model方法,并根据模型在Sqlite3 db中已有的数据重新计算新值

并将其显示到我的模板中

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

型号:

代码语言:javascript
运行
复制
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

表格:

代码语言:javascript
运行
复制
from django import forms

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

视图:

代码语言:javascript
运行
复制
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})

模板

...`

代码语言:javascript
运行
复制
    {% 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>

{% endblock %}

代码语言:javascript
运行
复制
    {% for list in list %}
    <div>
 {{ list.name }} {{ list.price }} {{ list.n_price }} </div>

{% endfor%}

...`

EN

回答 1

Stack Overflow用户

发布于 2019-04-07 12:38:53

您正在将表单(而不是数字)传递给导致问题的函数。您需要传递数据,因此将行Product.n_price(form)更改为Product.n_price(form.data),以便从Namespace表单获取数字数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55555497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档