2010-11-06 3 views

Répondre

0

EDIT:

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

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

Mais .. Daniel Roseman a un très bon point sur le produit cartésien - si c'est ce que tu voulais dire.

+0

Ceci échouera à moins que m1 et m2 ne soient du même modèle. Ou ai-je tort? –

+0

C'est une addition de liste simple, elle ne peut pas échouer. –

+0

-1. Les Querysets ne sont pas des listes. Cela échouera - en fait, il échouera même s'il s'agit du même modèle, car la classe QuerySet ne définit simplement pas la méthode '__add__'. –

1

Je suppose que vous vous rendez compte que le SQL que vous avez publié produit une jointure cartésienne entre les tables m1 et m2? C'est-à-dire que votre jeu de résultats inclut toutes les lignes possibles de m1 jointes à toutes les lignes possibles de m2, donc si vous avez 5 lignes dans une table et 10 dans une autre, vous obtiendrez 50 résultats.

Si c'est vraiment ce que vous voulez, et je ne vois pas pourquoi vous le feriez, il n'y a pas de moyen facile de le faire dans l'ORM de Django.

Cependant, si ce que vous avez réellement voulu dire était simple JOIN:

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

alors vous pouvez obtenir quelque chose de similaire avec la méthode select_related().

Questions connexes