考虑以下定义:
class A(models.Model):
...
class B(models.Model):
a_obs = models.ForeignKey(A, related_name='b')
class C(models.Model):
b_obs = models.ForeignKey(B, related_name='c')
假设我们有ob1
类型的实例A
。如何在不使用C
和ob1
经理的情况下获取与C.objects
相关的所有B.objects
个实例进行双向反向查找?
正常情况下,ob1.b.all()
会给我一个QuerySet
B
个,但那么呢?
答案 0 :(得分:0)
执行"双反向查找"耗费了大量资源。您确定数据不能以其他方式构建吗?
为了回答您的问题,我找到了可能符合您要求的解决方案here。尝试做:
# You start with object A as objA
objsB = objA.b.all()
requested_c_objects = [C.objects.filter(b_obs=b) for b in objsB]
我还没有对它进行测试,因此它可能包含错误,但希望您明白这一点。
P.S。:没有*.objects
是不可能做到的。尝试添加自己的Manager方法或直接在SQL语法中执行。