2009-10-09 8 views
2

Je les modèles suivants:Dans Django QuerySet, comment vérifier un objet spécifique dans un champ ManyToMany?

class Topping(models.Model): 
    ... 

class Pizza(models.Model): 
    toppings = models.ManyToManyField(Topping) 

J'ai alors un objet en tête:

cheese = Topping.objects.get(name='cheese') 

Je trouve donc toutes les pizzas avec la garniture de fromage à la requête suivante:

Pizza.objects.all().filter(toppings=cheese) 

Ce qui précède semble fonctionner mais est-ce la bonne façon de le faire?

Répondre

9

Oui, bien que all() soit superflu.

Ou, pour éviter la requête supplémentaire pour obtenir l'objet de fromage, vous pouvez utiliser la syntaxe standard double underscore pour parcourir les relations:

Pizza.objects.filter(toppings__name='cheese') 
Questions connexes