TypeError: '>' не поддерживается между экземплярами 'CombinedExpression' и 'int'

Я получил эту модель продукта:

class Product(models.Model):
    quantity = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    price = models.DecimalField(max_digits=10, decimal_places=2, default=0)

    @property
    def value(self):
        return F('quantity') * F('price')

Когда я вызываю .value на экземпляре продукта, я получаю в ответ:

product.value // returns 14

но когда я проверяю условие:

for product in Product.objects.all():
    while (product.value > 0):
        ...

Я получил эту ошибку:

TypeError: '>' not supported between instances of 'CombinedExpression' and 'int'

Я не нашел существующего вопроса по этой проблеме. Как ее решить?

Вы работаете с атрибутами напрямую:

class Product(models.Model):
    # …

    @property
    def value(self):
        return self.quantity * self.price

Вы используете F-выражения [Django-doc] для создания выражений для запросов к базе данных, а не для умножения значений на уровне Python/Django.

Вернуться на верх