2010-11-06 68 views

回答

0

编辑:

m1.objects.all()+ m2.objects.all()

list(m1.objects.all()) + list(m2.objects.all()) 

但是..丹尼尔·罗斯曼大约有笛卡尔乘积一个非常好的问题 - 如果这是你的意思是。

+0

这将失败,除非m1和m2是相同的型号。或者我错了? – 2010-11-06 22:57:39

+0

这是一个简单的列表,除此之外,它不会失败。 – 2010-11-06 23:07:12

+0

-1。查询集不是列表。这将失败 - 实际上,即使它们是相同的模型,它也会失败,因为QuerySet类没有定义'__add__'方法。 – 2010-11-07 09:22:02

1

我想你知道你发布的SQL在表m1和m2之间产生笛卡尔连接?也就是说,您的结果集包含m1中所有可能的行,并与m2中所有可能的行结合,因此如果您在一个表中有5行,而另一个表中有10行,则会得到50个结果。

如果这真的是你想要的,我想不出为什么会这么做,Django ORM中没有简单的方法。

但是,如果你实际上意味着是一个简单的JOIN:

SELECT * from m1, m2 WHERE m1.m2_id = m2.id; 

那么你就可以实现与select_related()方法类似。