我正在学习Python/Django,我在理解如何调用参数/将参数传递给模型方法时遇到了一些问题
在我的示例中,我从表单中获取Decimal输入,将其传递给my model方法,并根据模型在Sqlite3 db中已有的数据重新计算新值
并将其显示到我的模板中
如果我删除model方法中的变量参数,并直接在model方法中乘以一个常量,代码就可以正常工作并在模板中呈现良好
型号:
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})
模板
...`
{% 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 %}
{% for list in list %}
<div>
{{ list.name }} {{ list.price }} {{ list.n_price }} </div>
{% endfor%}
...`
发布于 2019-04-07 12:38:53
您正在将表单(而不是数字)传递给导致问题的函数。您需要传递数据,因此将行Product.n_price(form)
更改为Product.n_price(form.data)
,以便从Namespace表单获取数字数据。
https://stackoverflow.com/questions/55555497
复制相似问题