我有以下型号:

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()是多余的。

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

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

10-05 23:06