Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
django包含所有查询_Django_Django Orm - Fatal编程技术网

django包含所有查询

django包含所有查询,django,django-orm,Django,Django Orm,我有一些这样的模型 class Ingredient(models.Model): name = models.CharField(max_length=128) class Recipe(models.Model): name = models.CharField(max_length=128) ingredients = models.ManyToManyField(Ingredient, through='RecipeIngredient') class Rec

我有一些这样的模型

class Ingredient(models.Model):
    name = models.CharField(max_length=128)

class Recipe(models.Model):
    name = models.CharField(max_length=128)
    ingredients = models.ManyToManyField(Ingredient, through='RecipeIngredient')

class RecipeIngredient(models.Model):
    recipe = models.ForeignKey(Recipe)
    ingredient = models.ForeignKey(Ingredient)
如何找到包含所有成分的食谱

这是一个例子

>>> i1 = Ingredient(name="egg")
>>> i1.save()
>>> i2 = Ingredient(name="flour")
>>> i2.save()
>>> i3 = Ingredient(name="water")
>>> i3.save()
>>> i4 = Ingredient(name="milk")
>>> i4.save()
>>> i5 = Ingredient(name="sugar")
>>> i5.save()
>>> i6 = Ingredient(name="carrot")
>>> i6.save()
>>> i7 = Ingredient(name="wheat")
>>> i7.save()

>>> r1 = Recipe(name="omelet")
>>> r1.save()
>>> r1.ingredients.add(i1, i2, i3)
>>> r2 = Recipe(name="icecream")
>>> r2.save()
>>> r2.ingredients.add(i3, i4, i5)

>>> test = Recipe.objects.filter(ingredients__in=[i1.id, i2.id, i3.id, i4.id])
>>> test
[<Recipe: omelet>, <Recipe: omelet>, <Recipe: omelet>, <Recipe: icecream>, <Recipe: icecream>]
>i1=成分(name=“鸡蛋”)
>>>i1.保存()
>>>i2=配料(名称=“面粉”)
>>>i2.保存()
>>>i3=成分(名称=“水”)
>>>i3.save()
>>>i4=成分(名称=“牛奶”)
>>>i4.保存()
>>>i5=成分(名称=“糖”)
>>>i5.保存()
>>>i6=成分(名称=“胡萝卜”)
>>>i6.保存()
>>>i7=成分(名称=“小麦”)
>>>i7.save()
>>>r1=配方(name=“omelet”)
>>>r1.save()
>>>r1.配料。添加(i1、i2、i3)
>>>r2=配方(name=“冰淇淋”)
>>>r2.保存()
>>>r2.配料。添加(i3、i4、i5)
>>>test=Recipe.objects.filter(配料\uuu in=[i1.id,i2.id,i3.id,i4.id])
>>>试验
[, , ]
我只想找到煎蛋卷。因为只有蛋卷含有鸡蛋(i1)、面粉(i2)、水(i3)


谢谢

也许把它连在一起

Recipe.objects.filter(ingredients=i1.id).filter(ingredients=i2.id).filter(ingredients=i3.id).filter(ingredients=i4.id)
>>>Recipe.objects.filter(配料=i1.id).filter(配料=i2.id).filter(配料=i3.id).filter(配料=i4.id)[]