2012-08-23 1 views
1

j'ai un modèle suivant:Django: sélectionnez tous les objets A qui sont impliqués dans les relations m2m avec des objets B (via B.m2mfield)

class People(models.Model): 
    name=models.CharField 

class Recordings(models.Model): 
    title=models.CharField 
    performers=models.ManyToManyField(People) 

J'ai besoin de toutes les personnes qui sont des artistes, i. e. les personnes qui figurent dans la liste des artistes interprètes ou exécutants d'au moins un enregistrement.

SQL serait comme ceci:

SELECT * FROM people WHERE id IN (SELECT DISTINCT people_id FROM recordings_people) 

ou

SELECT DISTINCT * FROM recordings_people JOIN people ON recordings_people.people_id=people.id 

Comment puis-je faire la même chose avec Django ORM de façon élégante?

Répondre

0

Aussi facile que 1,2,3 avec ne comprend pas:

People.objects.exclude(recordings=None) 

Est-ce assez élégant? ;)

+0

C'est parfait, merci! –

Questions connexes