В моей модели есть следующий код, который определяет, является ли Entry
оплачиваемым:
class Entry(models.Model):
[ .. ]
@property
def is_billable(self):
return self.tags.filter(billable=False).count() == 0
У входа есть FK для Project. При определении оставшегося бюджета для Project
я перебираю все записи и проверяю, возвращает ли is_billable
True:
@property
def remaining_budget(self):
[ .. ]
for entry in self.entry_set.all():
if entry.is_billable:
remaining_budget -= entry.minutes
Что довольно тяжело для базы данных, потому что она будет запускать запрос для каждой записи. Я ищу способ оптимизировать это, советы и подсказки приветствуются.