2009-05-20 20 views
0

J'ai le concept d'une équipe dans mon application django.Comment effectuer une requête dans django qui sélectionne tous les projets dont je suis membre?

class Team(models.Model): 
    name = models.CharField(max_length=200) 
    #snip 
    team_members = models.ManyToManyField(User) 

Je voudrais récupérer toutes les équipes dont l'utilisateur actuellement connecté est membre. Quelque chose dans le sens de

Team.objects.all().filter(request.user.id__in = team_members.all()) 

Cette évidence ne fonctionne pas. Quelqu'un at-il des suggestions sur la façon de faire une telle requête sans aller directement à sql? J'ai regardé the django documentation de requêtes "in", mais je n'ai pas pu trouver mon cas d'utilisation là.

Merci beaucoup! Nick.

Répondre

4

Ici, vous n'avez pas besoin de in, Django gère cela automatiquement dans une recherche ManyToMany.

En outre, vous devez comprendre que les champs de base de données doivent toujours être sur la gauche de la recherche, car ils sont effectivement traités comme des paramètres à une fonction.

Qu'est-ce que vous voulez réellement est très simple:

Team.objects.filter(team_members=request.user) 

ou

request.user.team_set.all() 
+0

Merci beaucoup pour cette astuce, je dois avoir manqué cela dans la documentation, c'est exactement ce que je dois. – Nick

Questions connexes