Django фильтрует список объектов json путем сравнения с другим списком

У меня есть модель, в которой есть поле, которое является полем JSON. Это json_поле имеет значение, которое является списком. Используемая база данных - Postgres

model: 
  attr1:
  attr2:
  attr3:
  json_field: {
      jattr1:
      jattr2:
      array_field: [values ...]
  }

У меня есть кверисет, полученный в результате другой операции фильтрации: queryset

Я хочу применить model.objects.filter() так, чтобы получить все случаи, когда значения поля array_field присутствуют в наборе запросов.

Например: рассмотрим 4 экземпляра

instance1: 
  json_field: {
      array_field: [1, 2, 3, 4]
  }

instance2: 
  json_field: {
      array_field: [2, 4]
  }

instance3: 
  json_field: {
      array_field: [1, 4]
  }

instance4: 
  json_field: {
      array_field: [3]
  }

и queryset есть :

queryset: [2, 3]

Я ожидаю что-то вроде этого:

Model.objects.filter(json_field__array_field__in=queryset)

# This should return
instance1: 
  json_field: {
      array_field: [1, 2, 3, 4]
  }

instance2: 
  json_field: {
      array_field: [2, 4]
  }

instance4: 
  json_field: {
      array_field: [3]
  }

Спасибо за помощь.

хитрость заключалась в использовании __contains вместо __in таким образом

Model.objects.filter(json_field__array_field__contains=queryset)

Приведенный выше запрос выполняет эту работу

Вернуться на верх