Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用2个M2M字段的相关名称筛选Django模型_Python_Django_Django Models_Django Orm - Fatal编程技术网

Python 使用2个M2M字段的相关名称筛选Django模型

Python 使用2个M2M字段的相关名称筛选Django模型,python,django,django-models,django-orm,Python,Django,Django Models,Django Orm,我的模型具有以下结构: class Sauce(models.Model): ... class Topping(models.Model): ... class Pizza(models.Model): sauces = models.ManyToManyField(Sauce, related_name='pizzas') toppings = models.ManyToManyField(Topping, related_name='pizzas')

我的模型具有以下结构:

class Sauce(models.Model):
    ...

class Topping(models.Model):
    ...

class Pizza(models.Model):
    sauces = models.ManyToManyField(Sauce, related_name='pizzas')
    toppings = models.ManyToManyField(Topping, related_name='pizzas')
现在,让我们假设我想查询所有的比萨饼给一个列表的配料和酱汁。例如:

sauces_ids = [2, 5, 7, 8]
toppings_ids = [1, 4, 5, 21]

使用Django的ORM查询这个问题最有效的方法是什么?谢谢您的帮助。

假设这些是
pk
/
id
字段的值,您可以使用
查找中的
\u:

Pizza.objects.filter(sauces__source_id__in=[2,5,6,8], toppings__topping_id__in=[1, 4, 5, 21])
Pizza.objects.filter(sauces__in=sauces_ids, toppings__in=toppings_ids)
如果这些是其他字段的值,则还需要引用字段名,例如,使用字段名
字段

Pizza.objects.filter(sauces__field__in=sauces_ids, toppings__field__in=toppings_ids)