数据库中有几张表通过外键关联的 现在我想将一些数据排序展示出来(涉及了几张表)
然后就碰到了如下情况
第一种:
orders = Order.objects.filter(**params).order_by('-created')
然后在模板中遍历,会导致查询很多次数据库
第二种:
orders = Order.objects.filter(**params).order_by('-created').select_related("source", "customer", "handler","source__handler")
这样减少查询次数但是查询时间超级久
第三种: 我将第二种里面的 order_by 取消掉后,也就是
orders = Order.objects.filter(**params).select_related("source", "customer", "handler","source__handler")
这种情况,查询效率就又正常了,可是数据不是排序的
然后在我百度了一下午之后发现这个博客写的好像和我的情况一样,链接
可是问题来了,我只会写简单 sql,这个 sql 实在是太复杂了,搞不定,请教下各位前辈,有没有办法直接用 ORM 就能解决
1
ysw 2019-10-21 01:59:48 +08:00 1
可以分成两步,先 order by 获取 ID 和 created,然后在关联查询和排序😀
|
2
banxi1988 2019-10-21 08:54:41 +08:00 2
你可以把 select_related 改成 prefetch_related. 应该可以完美解决你的问题.
|
3
gz911122 2019-10-21 09:28:40 +08:00 1
created 有索引吗?
|