27

我知道简短的答案,因为我试过了。有没有办法做到这一点(即使只是因为黑客)?

class Ticket(models.Model):
    account = modelfields.AccountField()
    uuid = models.CharField(max_length=36, unique=True)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['created']

    @property
    def repair_cost(self):
        # cost is a @property of LineItem(models.Model)
        return self.lineitem_set.aggregate(models.Sum('cost'))
4

2 回答 2

26

不。任何通过内置管理器的东西都必须是一个真实的字段,因为它们只涉及数据库。为了使用属性,他们必须将表中的每条记录转换为模型,然后在 Python 中过滤它们。

于 2010-06-18T00:59:25.000 回答
5

我有一个类似的场景,想要完全相同的功能。我用以下几行简单地解决了它:

...
return sum(lt.cost for lt in self.lineitem_set)
于 2016-06-20T07:17:41.523 回答