Я пытаюсь передать ввод формы в метод моей модели, чтобы сделать некоторые вычисления на основе значений базы данных моего поля модели.
Я знаю, что могу сделать это с помощью пользовательских фильтров тегов, но этоне эффективно, так как мне нужно сделать сложный расчет позже.Я где-то читал, что в 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 %}