如何解决在 Django 中结合 raw_id_fields 使用 prefetch_related()
我正在尝试通过 prefetch_related()
消除查询。在带有 TabularInline 的管理员中,这适用于所有情况,除了 raw_id_fields = ('article',)
创建的 ForeignKeyRawIdWidget。这是由于它的 Queryset.get()
,并且过滤器操作在预取时不应该起作用。所以对于内联中的每一行,我都会得到一个单独的查询。
这篇博文说明了一种解决方法:
https://blog.mounirmesselmeni.de/2017/02/06/accessing-prefetched-objects-inside-your-models-methods/
解决方法对我来说看起来很混乱,并且在这种情况下不起作用,因为小部件可以获取。是否有一些正确的方法可以在此处进行预取,或者这是 Django 预取限制?不使用 raw_id_fields
不是一种选择,因为默认小部件会执行更多查询。
另外,我不明白为什么过滤器操作在实际查询数据库之前不检查预取缓存。这个小步骤可能会节省大量查询,对吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。