django – 是否有可能在多个级别上prefetch_related?
发布时间:2020-12-20 11:39:56 所属栏目:Python 来源:网络整理
导读:我只是想知道我是否有三个型号: class A(models.Model: b = models.ForeignKeyField('B')class B(models.Model): c = models.ForeignKeyField('C')class C(models.Model): user = models.ForeignKeyField('auth.User') 我在A的列表视图中: foo = A.objects
我只是想知道我是否有三个型号:
class A(models.Model: b = models.ForeignKeyField('B') class B(models.Model): c = models.ForeignKeyField('C') class C(models.Model): user = models.ForeignKeyField('auth.User') 我在A的列表视图中: foo = A.objects.all().prefetch_related('B') 有没有办法让它预取C(然后’auth.User’)? 我正在使用Django 1.7 谢谢你的帮助! 解决方法
你应该可以做A.objects.all().prefetch_related(‘b__c__user’).这将获取所有A,然后查看A中引用的所有不同B对象并获取它们,然后对B – >执行相同操作. C,然后C – >用户.字段字符串中的双下划线运算符表示“完成此操作” – 在这种情况下,它通过b和c指定用户的路径.请注意,“b”和“c”应为小写,因为您指定的是字段名称,而不是类名称.
在性能方面你可能会对select_related over prefetch_related感到更高兴,除非你有一个特定的原因,你不想让你的数据库进行连接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |