Предположим, у меня есть модель "Книги" , которая имеет поле с именем "location_available" . В этом поле хранится список мест, в которых доступна книга. Теперь у меня есть query_list = ['US', 'Germany', 'Italy'] .
Чтобы найти все книги, которые доступны в любом из этих мест, я бы сделал в Django 2.2 такой:
Books.objects.filter(locations_available__overlap=query_list)
Поскольку в Django 1.1 не было функции перекрытия, как бы я там делал такую же функциональность?
>>> Books.objects.create(name='X', locations=['India', 'Japan'])
>>> Books.objects.create(name='Y', locations=['US', 'Korea'])
>>> Books.objects.create(name='Z', locations=['Italy', 'Germany'])
>>> Books.objects.create(name='A', locations=['US', 'Germany', Italy])
С учетом приведенных выше данных должны быть возвращены следующие данные:
name='Y', locations=['US', 'Korea']
name='Z', locations=['Italy', 'Germany']
name='A', locations=['US', 'Germany', 'Italy']
Обратите внимание, что книга с name = 'X' не возвращается, поскольку она не перекрывается ни с одним из местоположений в query_list.
Проверьте это для более подробной информации: https://docs.djangoproject.com/en/2.2/ref/contrib/postgres/fields/#overlap