我的模型中有以下代码,用于确定Entry
是否可以计费:
class Entry(models.Model):
[ .. ]
@property
def is_billable(self):
return self.tags.filter(billable=False).count() == 0
条目有一个FK到项目。在确定Project
上的剩余预算时,我会遍历所有条目,并检查is_billable
是否返回True:
@property
def remaining_budget(self):
[ .. ]
for entry in self.entry_set.all():
if entry.is_billable:
remaining_budget -= entry.minutes
对于数据库来说,这有点沉重,因为它会为每个条目触发查询。我正在寻找一种优化方法,欢迎提示和提示。
答案 0 :(得分:0)
如果您需要摆脱计数查询,那么为什么不:
is_billable
型号Entry
字段
is_billable == True
的新标记,则将其设置为True /如果删除了标记且没有{{1}的标记}保留,然后将其设置为False等)当然,如果您的数据可以通过其他应用程序或手动更改,则不应首选此方法。