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)