Фильтр полей массива Django

В моем случае поданные клиентом являются массивом поданных

customer = ArrayField(models.TextField(),default=[])

моя модель выглядит как

id customer
1 {1,2,3}
2 {4,2,5}
3 {1,8,9}

я хочу отфильтровать мою модель по {5,8} на выходе будет 2th ,3th ряд

Вы можете использовать overlap следующим образом:

customer_ids = MyModel.objects.filter(
     customer__overlap=[5, 8]
).values_list('id', flat=True)
# do something with customer_ids

Но использование id для определения номера строки неправильно, потому что если вы удалите элемент с id 3, а затем после этого вставите новый элемент, то этому новому элементу будет присвоен id 4. Таким образом, номер последней строки даст вам 4-ю строку, что неправильно.

Вы можете получить номер строки следующим образом:

row_numbers = [index for index, customer_id in enumerate(customer_ids)]  
Вернуться на верх