У меня есть ArrayField, в котором хранятся последовательности целых чисел, например: Sequences.objects.first().seq
возвращает [5,4,4,3,2,2,1]
. Последовательности всегда сохраняются в порядке убывания, и я хочу отфильтровать Sequences
, чтобы найти подпоследовательность. Тем не менее, я сталкиваюсь с проблемами при попытке найти подпоследовательность, которая содержит повторяющиеся элементы, и я не знаю, как решить эту проблему.
Например, если я хочу отфильтровать любую последовательность, содержащую подпоследовательность q = [5,4,4,4,2]
, я бы попробовал Sequences.objects.filter(seq__contains=q)
, но этот QuerySet будет включать последовательность [5,4,4,3,2,2,1]
, поскольку каждый элемент q находится отдельно в последовательности, но не все вместе. Однако я не хочу только точных совпадений. Если бы я отфильтровал по q, я бы хотел включить что-то вроде [6,5,5,4,4,4,3,2,1]
, но отклонить что-то вроде [5,4,4,3,2,2,1]
, так как в первом случае все q имеют кратность, а во втором отсутствует 4, и поэтому не содержит q в качестве подпоследовательности. .