Неподдерживаемый тип(ы) операнда для *: '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
Вернуться на верх