моя форма передает значение NoneType в расчет метода моей модели. Я что-то пропустил? - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь передать ввод формы в метод моей модели, чтобы сделать некоторые вычисления на основе значений базы данных моего поля модели.

Я знаю, что могу сделать это с помощью пользовательских фильтров тегов, но этоне эффективно, так как мне нужно сделать сложный расчет позже.Я где-то читал, что в Django нельзя передавать параметры моделям, но это звучит глупо, чтобы быть правдой ...

Я что-то пропускаю, создавая что-то где-то ??

Ошибка, когда ясохранить новое значение в форме:

np = self.price * значение неподдерживаемый тип (ы) операндов для *: 'NoneType' и 'int' '
, поэтому он связан

Это также очень сбивает с толку, потому что если я установлю значение по умолчанию в моем методе, вычисление будет хорошо отображаться в шаблоне.

Я был бы очень признателен за помощь

Модель


class Product(models.Model):
    sku = models.CharField(max_length=30)
    price = models.FloatField()

    def __str__(self):
        return self.sku

    def multi(self, value = 2):  #THIS DEFAULT '2' IS PROCESSED BY THE METHOD
        np = self.price * value  #AND RENDERS A NP VALUE IN THE TEMPLATE
        return np

Просмотр

from .models import Product
from .forms import Input

def index(request):
    list = Product.objects.all()
    value = 0   #just to check

    if request.method == "POST":
        form = Input(request.POST or None)

        if form.is_valid():
            value = request.POST.get('data')
            value = form.cleaned_data.get('data')

            p = Product()   # IS THIS EVEN THE CORRECT SPOT THE CODE ???
            p.multi(value)   


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


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

шаблон

{{ value }}

 {% for item in list %}  

        {{ item.sku }}  {{ item.price }} {{item.multi}} 

{% endfor %}

1 Ответ

0 голосов
/ 14 апреля 2019

Это потому, что вы не присвоили значение новому атрибуту цены экземпляра продукта. Таким образом, это значение по умолчанию None. Вероятно, вы должны установить цену при создании вашего продукта. Вот как пример: p = Product(price=42)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...