如何使用Django Model计算属性转换为Django Manager模型?

时间:2019-01-06 14:46:08

标签: python django

我试图将django模型的计算属性用于自定义管理器,以实现自定义结果。但是django只允许将常规属性用于管理器。

我已经尝试将@property添加到我的计算属性中,但无法正常工作。

这是我的代码:

class Produto(models.Model):
    nome = models.CharField(max_length=100)
    fabricante = models.ForeignKey('Fabricante', on_delete=models.PROTECT)
    frete_ipi = models.DecimalField(decimal_places=2, max_digits=10)
    price = models.DecimalField(decimal_places=2, max_digits=10)
    cost_price = models.DecimalField(decimal_places=2, max_digits=10)

    @property
    def real_cost_price(self):
        p = (self.cost_price * self.frete_ipi) + self.cost_price
        return round(p, 2)

我正在尝试将“ real_cost_price”用于我的经理,并且无法正常工作。

class EstoqueCentroManager(models.Manager):
    def total_venda(self):
        total = self.all().aggregate(valor=Sum(F('quantidade') * F('produto__real_cost_price'), output_field=FloatField()))
        return total

如何在我的经理中使用此计算属性“ real_cost_price”?还是有其他方法可以实现这种结果?

谢谢!

0 个答案:

没有答案