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.