gpt4 book ai didi

django - 使用 select_related 时,如何使用相关模型的自定义管理器?

转载 作者:行者123 更新时间:2023-12-03 17:04:52 26 4
gpt4 key购买 nike

例如,我有模型,

class ModelBManager(models.Manager):
def get_queryset(self):
return self.super().get_queryset().select_related('y')

class ModelA(models.Model):
x = models.TextField()

class ModelB(models.Model):
y = models.ForeignKey(ModelA)
objects = ModelBManager()

class ModelC(models.Model):
z = models.ForeignKey(ModelB)

现在,如果我这样做 ModelC.objects.get(id=1).z我会得到 ModelB具有预取的实例 ModelA实例( ModelBManager 有效)。

但如果我这样做 ModelC.objects.select_related('z')[0].z ,不会有预取 ModelA实例与 ModelB实例。(基本上 ModelBManager 不起作用!)

任何人都知道我该如何实现这一目标?

谢谢

最佳答案

select_related允许使用跨度获取更深层次的关系。

在你的情况下,你应该使用 ModelC.objects.select_related('z__y').first().z.y .

关于django - 使用 select_related 时,如何使用相关模型的自定义管理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49352897/

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