Запрос модели для фильтрации, в которой поле ManyToManyField соответствует определенному набору
У меня есть две модели:
class Item(models.Model):
name = models.CharField()
# etc
class MergedItems(models.Model):
items = models.ManytoManyField(Item)
# etc
Я хочу, чтобы для каждого MergedItem
требовался уникальный набор Item
. Когда пользователь пытается создать новый MergedItem
, он передает массив идентификаторов Item
. Я пытаюсь проверить этот ввод и выдать ошибку, если MergedItem
с таким определенным набором Item
уже существует, но у меня возникают трудности с логикой запроса/определения этого.
Например:
- User creates
MergedItem
withItem
[1, 2] - OK - User creates
MergedItem
withItem
[3, 4] - OK - User creates
MergedItem
withItem
[1, 2, 3] - OK, [1, 2] already exists but the addition of 3 makes it a unique set - User creates
MergedItem
withItem
[1, 2] - ERROR, [1, 2] already exists
Все ресурсы, которые я нашел, были сосредоточены на использовании чего-то вроде filter(items__id_in=[1, 2])
, но это делает запрос OR для идентификаторов элементов. Мне нужен запрос AND для них, и я не смог найти ничего подобного.
Я уверен, что существуют решения для перебора, но это будет работать на публичной конечной точке к большой базе данных, поэтому эффективность запросов также является ключевым фактором.
Заранее спасибо!