在Django QuerySet中,如何检查多个字段中的特定对象?

在Django QuerySet中,如何检查多个字段中的特定对象?,django,django-models,Django,Django Models,我有以下型号: class Topping(models.Model): ... class Pizza(models.Model): toppings = models.ManyToManyField(Topping) 然后我有一个顶级对象: cheese = Topping.objects.get(name='cheese') 然后,我通过以下查询找到所有顶部有奶酪的比萨饼: Pizza.objects.all().filter(toppings=cheese) 上述

我有以下型号:

class Topping(models.Model):
    ...

class Pizza(models.Model):
    toppings = models.ManyToManyField(Topping)
然后我有一个顶级对象:

cheese = Topping.objects.get(name='cheese')
然后,我通过以下查询找到所有顶部有奶酪的比萨饼:

Pizza.objects.all().filter(toppings=cheese)
上述方法似乎有效,但这是正确的方法吗?

是的,尽管all()是多余的

或者,为了避免获取cheese对象的额外查询,可以使用标准的双下划线语法遍历关系:

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