gpt4 book ai didi

django - 是否可以在多个级别上预取相关?

转载 作者:行者123 更新时间:2023-12-02 08:55:00 25 4
gpt4 key购买 nike

我只是想知道我是否有三个模型:

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 的 ListView 中:

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 -> User 执行相同操作。字段字符串中的双下划线运算符表示“通过此”——在本例中,它指定通过 b 和 c 到达用户的路径。请注意,“b”和“c”应该小写,因为您指定的是字段名称,而不是类名称。

就性能而言,您可能会对 select_related 更满意超过prefetch_related除非您有特定原因不想让数据库执行连接。

关于django - 是否可以在多个级别上预取相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27812168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com