Подтвердить что ты не робот

Django - Можно ли использовать свойство как поле в функции агрегации?

Я знаю короткий ответ, потому что попробовал. Есть ли способ сделать это хотя (хотя бы из-за взлома)?

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'))
4b9b3361

Ответ 1

Нет. Все, что проходит через встроенный менеджер, должно быть реальным полем, поскольку они касаются только базы данных. Чтобы работать с собственностью, им пришлось бы превратить каждую запись в таблицу в модель, а затем пропустить через них в Python.

Ответ 2

У меня есть аналогичный сценарий и вы хотите точно такую ​​же функцию. Я решил это тривиально со следующей строкой:

...
return sum(lt.cost for lt in self.lineitem_set)