你能帮我用 postgres 为以下标准编写完美的 django ORM 查询吗?

Can you help me write the perfect ORM query for django with postgres for the following criteria?

所以我有这样的模型,

    class AlphabetArray(models.Model):
        slug = ArrayField(
                        models.CharField(max_length=50, blank=True),
                        null=True,default=list)

在字段 slug 中,我们可能有类似 ['a','b','c',.....'z'] 的值 是否可以查询此模型,这样, 我得到的 slugs 对象只包含至少一个或两个列表 ['d','e'] 而不是任何其他字母表?

所以我正在查询具有 'd''e' 或同时具有 'd''e' 而不是任何其他字母表的对象?

您需要检查 2 个重叠:

  1. 目标数组与数组重叠['d','e']
  2. 目标数组重叠数组['a','b','c','f' ... 'z']

以下在SQL中完成,因为我不会django,你将不得不修改它。您在决赛中不需要 CTE 和 select_it,但它们对测试很有用。

-- setup test cases
with test_array_sets (test_array,select_it) as 
   ( values (array['d','e'],'Yes') 
          , (array['d','e','f'],'No')
          , (array[]::text[],'No')
          , (array['x','y','z'],'No')
          , (array['d'],'Yes')
          , (array['e'],'Yes')
    )
-- actual query needed,  
select target_array, select_it
  from test_array_sets
 where not target_array && array['a','b','c','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] 
   and target_array && array['d','e'] ; 

任何寻找此问题答案的人,

alphabets = AlphabetArray.objects.filter( Q ( slug__contained_by=['d','e'] ) | Q ( slug__len__gte=1)