我的Python / Django代码中的数据类型问题

时间:2019-04-09 03:09:32

标签: python django

我已经更新了我的代码示例,因为它与我的真实代码有一些细微的不一致

我的代码遇到了菜鸟问题。 这是一个简单的乘法器功能,如下所示:

1 /模型
1.a /具有2个字段:名称为CharField,价格为Decimalfield
1.b /的方法乘数基本上是newprice = self.price * arg

2 /表格 捕获输入(将self.price与之相乘的值)

3 /用于传递带有表单和上下文的模板的视图

我一直遇到无法用'NoneType'类型或TypeError类型的非整数乘以序列的问题:不支持的操作数类型错误。

我尝试更新代码以更改对象的类型或模型字段等,但是找不到有效的解决方案...

btw:如果模型方法的参数用常量替换,则一切都会正常工作

型号

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 multi(self, n):
        np = self.price * n
        return np

表格

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

查看


from django.shortcuts import render
from .models import Product
from .forms import Input
from decimal import Decimal

def index(request):
    list = Product.objects.all()
    value = 1
    if request.method == "POST":
        form = Input(request.POST or None)

        if form.is_valid():
            value = request.POST.get('data')
                                   ##what shoud I do here
            Product.multi(value) ##Is this correct ??


    else:
        form = Input(request.POST or None)

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

模板


        {% block content %}
    <h2>New price</h2>
    <form method="POST" class="price-form" name="data">
        {% csrf_token %}

        {{ form }}

        <button type="submit" class="save btn btn-default">Save</button>
    </form>
{% endblock %}
<br>
{{ value }}
<br><br>

        {% for list in list %}
        <div>
     {{ list.name }} {{ list.price }} {{ list.multi }} </div>
{% endfor %}

0 个答案:

没有答案