У меня есть Article
модель, которая содержит поле keywords
, представляющее собой ArrayField
списка ключевых слов в отсортированном порядке возрастания. Я хочу сделать запрос, который находит все статьи с минимальным количеством ключевых слов, перекрывающихся.
Пример:
article_a = Article(keywords=["tag1", "tag2", "tag3"]
article_b = Article(keywords=["tag1", "tag2", ]
article_c = Article(keywords=["tag1", ]
article_a.find_similar_articles(min_overlap=2)
# Returns [article_b, ] since it overlaps with at least 2 elements.
Здесь есть аналогичный вопрос , который предназначен для обычных Postgres, а не для Django ORM.
Кто-нибудь знает, как я могу запросить поле массива таким образом? Или, может быть, у вас есть предложение другого способа достижения того же результата путем структурирования данных другим способом?