我有三种型号
class A(Model):
...
class B(Model):
id = IntegerField()
a = ForeignKey(A)
class C(Model):
id = IntegerField()
a = ForeignKey(A)
我想要获得(B.id,C.id)对,其中B.a == C.a。如何使用Django Orm进行联接?
答案 0 :(得分:1)
Django允许您reverse the lookup的方式与使用__
进行正向查找的方式大致相同:
它也向后工作。要引用“反向”关系,只需使用模型的小写字母即可。
此示例检索所有
Blog
对象,这些对象至少具有一个条目,其标题包含“列侬”:
Blog.objects.filter(entry__headline__contains='Lennon')
我认为您可以使用@Daniel Roseman关于将要返回的结果集类型的警告来做类似的事情。
ids = B.objects.prefetch_related('a', 'a__c').values_list('id', 'a__c__id')
与预取有关的内容将在内存较大的情况下提高django的较早版本的性能。