我在其中一个观点中有操作
order_details = [order.get_order_details() for order in orders]
现在order.get_order_details()
运行一个数据库查询。所以对于目前的情况。根据{{1}}的大小,数据库访问的数量将是巨大的。
在使用缓存之前,还有什么可以加快速度吗?
是否可以将所有选择操作合并为一个数据库操作?
使用orders
使其成为原子事务会增加任何性能吗?因为从技术上讲,查询将立即发送而不是单独发送,对吧?
编辑:是否有任何设计更改/模式可以避免这种情况?
编辑:
transaction.atomic()
答案 0 :(得分:1)
假设orders
是QuerySet
,例如Order.objects.filter(...)
的结果,添加:
.prefetch_related(Prefetch('item_set'))
到查询结束。然后使用:
items = self.item_set
get_order_details
中的。
请参阅此处的文档:https://docs.djangoproject.com/en/1.11/ref/models/querysets/#prefetch-related