select_reced字段上的django注释



我的简化模型:

class Product(models.Model):
    name = models.CharField()
class Price(models.Model):
    product = models.OneToOneField('Product', primary_key=True)
    value = models.DecimalField()
class Cart(models.Model):
    product = models.ForeignKey('Product')
    qnt =  models.IntegerField()

我需要两个字段的乘法存储在其他字段中,即sumCart.objects.select_related('product__price').annotate(sum=F('product__price__value') * F('qnt'))为什么不返回?

F('')替换为F('value')返回错误

无法将关键字"值"解散到字段中。选择是:cart_id, id,product,product_id,qnt

您尝试将整数字段与十进制字段相乘。因此,它发生了一个错误。您可以尝试此

from django.db.models import ExpressionWrapper, F, DecimalField

Cart.objects.select_related('product__price').annotate(
    sum= ExpressionWrapper(
        F('product__price__value') * F('qnt'), output_field=DecimalField()))

如果您要组合的字段是不同类型的字段,则需要告诉Django将返回哪种字段。由于f()不直接支持output_field,因此您需要用ExpressionWrapper包装表达式

相关内容

  • 没有找到相关文章

最新更新