Фильтрация ArrayField только по целому и точному массиву?
У меня есть ArrayField на модели.
Как я могу отфильтровать или получить только весь точный массив?
В настоящее время я делаю примерно следующее:
search = f'["a", "b", "c"]'
list = search[2:-2].split("', '")
dict = {}
for n, item in enumerate(list):
dict[f"slug__{n}"] = item
obj = queryset.filter(**dict)
Однако, это возвращает любой объект, где slug начинается с "a", "b" и "c". Например,
["a", "b", "c"]
["a", "b", "c", "d"]
["a", "b", "c", "d", "e"]
["a", "b", "c", "123"]
Как сделать фильтр или получить так, чтобы возвращалось только полное и точное совпадение slug? Т.е. obj возвращает только объекты со slug'ом ["a", "b", "c"]
Для фильтрации поля ArrayField по точному совпадению вы можете просто передать список, по которому будет производиться поиск, в filter
queryset = queryset.filter(slug=["a", "b", "c"])