Неподдерживаемый тип(ы) операнда для *: 'NoneType' и 'NoneType'
Привет всем, я пытаюсь вычислить цену единицы продукции и количество из этой таблицы следующим образом
class Marketers(models.Model):
category =models.ForeignKey(Category, on_delete=models.CASCADE, null=True)
name =models.CharField(max_length=50, null=True, blank =True)
grade =models.CharField(max_length=50, null=True, blank =True)
quatity_received = models.IntegerField(default=0, null=True, blank =True)
unit_price =models.IntegerField(default=0, null=True, blank =True)
customer = models.CharField(max_length=50, null=True, blank =True)
date_received = models.DateTimeField(auto_now_add=True)
date_sold = models.DateTimeField(auto_now_add=True)
@property
def get_total(self):
total = self.quatity_received * self.unit_price
return total
вот как я вызываю его в своем шаблоне
<td class="align-middle text-center">
<span class="text-secondary text-xs font-weight-bold">{{ list.get_total }}</span>
<p class="text-xs text-secondary mb-0">Overall Price </p>
</td>
это ошибка, которую я получаю
TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType'
пожалуйста, мне нужна помощь. Спасибо
Поскольку и количество_полученного и цена_единицы являются нулевыми, есть вероятность, что вы пытаетесь умножить два NoneType вместе, отсюда и ошибка
TypeError: unsupported operand type(s) for *: 'NoneType' and 'NoneType'
Пример для воссоздания ошибки
[3.8.8] >>> x=None
[3.8.8] >>> x
[3.8.8] >>> x*1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
Решение:
Если у вас будут нулевые поля, попробуйте переписать функцию get_total так
@property
def get_total(self):
if(self.quatity_received is None and self.unit_price is None):
return 0
else:
return self.quatity_received * self.unit_price