Django filtre queryset __pour *chaque* dans la liste

Disons que j'ai les modèles suivants

class Photo(models.Model):
    tags = models.ManyToManyField(Tag)

class Tag(models.Model):
    name = models.CharField(max_length=50)

En vue, j'ai une liste avec les filtres actifs appelé catégories.
Je veux filtre Photo des objets qui ont tous les tags présents dans catégories.

J'ai essayé:

Photo.objects.filter(tags__name__in=categories)

Mais cela correspond tout élément dans les catégories, pas tous éléments.

Donc, si les catégories seraient ['vacances', 'été'] je veux une Photo avec à la fois des vacances et l'été de tag.

Cela peut-il être atteint?

  • Peut-être: qs=Photo.objets.tous les(); pour la catégorie dans les catégories: qs = qs.filtre(balises__nom=catégorie)
  • jpic est droit, Photo.objects.filter(tags__name='holiday').filter(tags__name='summer') est le chemin à parcourir. (Ce sont les mêmes que jpic de l'exemple). Chaque filter devrait ajouter plus de JOINs de requête, de sorte que vous pouvez prendre annotation approche si ils sont trop nombreux.
  • Voici la référence dans la documentation: docs.djangoproject.com/en/dev/topics/db/queries/...