django-rest-framework - 如何在 django 中缓存查询集
问题描述
我有三个模型。
class ManagerOrder(models.Model):
order = models.OneToOneField(Order, on_delete=models.CASCADE, primary_key=True)
kam = models.ForeignKey(KeyAccountManager, on_delete=models.PROTECT)
@property
def quantity(self):
return OrderData.objects.filter(order_id = self.order.id) \
.aggregate(Sum('quantity'))['quantity__sum']
class Order(models.Model):
order_data = models.ManyToManyField('anotherapp', through='OrderData', related_name='+')
class OrderData(models.Model):
quantity = models.FloatField()
现在我正在尝试获取每个订单的总数量。但它一次又一次地调用 OrderData 模型(N+1 问题)。我阅读了有关 prefetch_related 的内容,并在我的观点中提出了相同的看法。
queryset = models.KeyAccountManagerOrder.objects.all().prefetch_related('order__order_data')
但它仍然一次又一次地调用 OrderData 模型。
解决方案
推荐阅读
- php - PHP / VB.NET POST 请求
- php - Silverstripe 3 列出特定文件夹中的所有模板(.ss - 文件)
- facebook-messenger - 以编程方式创建 Facebook Messenger 机器人的多个实例?
- jspdf - Jspdf向右浮动项目
- sql-server - 如何在 Visual Studio 2017“查看数据”网格中显示完整的日期时间值?
- arrays - 如何使用 react-native-svg 正确处理折线图上的负值
- ms-access - 使用嵌套查询打开 Recordset
- java - 如何使用 Jackson 将 JSON 数组中的嵌套值解析为列表
- telegram-bot - Telegram-BOT 用户 ID 只是一个私人聊天 ID?
- python - 如何在 python 中修复 datetime TypeError