【发布时间】:2020-06-14 15:49:05
【问题描述】:
在模板上调用Model的函数时是否可以避免撞到数据库?
在我看来:
class ContractListView(FilterView):
model = Contract
paginate_by = 100
def get_queryset(self):
qs = Contract.objects.prefetch_related('payments')
return qs
在我的模板中,我正在调用合同模型的函数payment_status。
型号:
class Contract(models.Model):
...
@property
def payment_status(self):
...
payments = self.payments.values_list('payment_date', flat=True) # it is hitting database again
return True if first in payments else False
当我在debug_toolbar 中看到 sql 查询时,prefetch_related 工作正常,但每一行都在重复查询。如何解决这个问题?
【问题讨论】:
标签: django django-models