Итак, я сделал веб-приложение «рецепт» в Django, где у меня есть функция «Кабинет пользователя», в которую пользователь может добавить любой из ингредиентов, и ему будет предложена опция, известная как «Готовые рецепты», в котором приложение будет предлагать пользователю, какие рецепты он сможет приготовить, учитывая ингредиенты своего кабинета. Теперь проблема в том, что если я хочу, чтобы рецепты содержали какие-либо ингредиенты в ящике, я могу сделать это 'Recipe.objects.filter (ингридиенты __ = кабинет_доставки). И если я хочу отфильтровать все ингредиенты в шкафу, я могу сделать:
qs = Recipe.objects.annotate(count=Count('ingredients'))\
.filter(count=len(cabinet_ingredients))
for ingredient in cabinet_ingredients:
qs = qs.filter(ingredients=ingredient)
Но если я хочу подмножество ингредиентов шкафа (что имеет больше смысла), чтобы рецепты не содержали ничего вне этих ингредиентов и могли содержать что-либо в этом списке. Например, учитывая 3 ингредиента из шкафа: «foo», «bar», «baz», я должен найти рецепты со следующими результатами:
Recipes with 3 ingredients:
('foo', 'bar', 'baz')
Recipes with 2 ingredients:
('foo', 'bar'),
('foo', 'baz'),
('bar', 'baz')
Recipes with single ingredient:
('foo')
('bar')
('baz')
Есть какой-нибудь ключ к этому? Заранее спасибо.