【问题标题】:How to perform a fulltext search in django array field如何在 django 数组字段中执行全文搜索
【发布时间】:2018-01-13 05:50:04
【问题描述】:

我有一个ArrayField 字符串,我想搜索是否有任何项目包含预期字符串集中的任何项目。

我已经定义了这样的字段:

class Path(models.Model):
    path = models.TextField()
    files = ArrayField(models.CharField(max_length=300))
    server_name = models.CharField(max_length=50)

    def __str__(self):
        return self.path

我想检查一下文件是否包含任何可能包含这些字符串之一的名称['foo', 'bar', 'baz']。这意味着如果files 包含以下项目:

['example', 'examplebar']

我希望它返回 true。

我已经研究了 ArrayField 的所有相关方法,但它们似乎都不起作用。

我想要containsoverlap 的组合。

【问题讨论】:

    标签: django postgresql django-queryset models


    【解决方案1】:

    django 似乎不直接支持这一点,所以你必须手动通过列表并搜索子字符串来完成。

    如果您在变量path 中有一个Path 对象,并且您在substrings 中搜索的字符串,您可以这样做:

    for file in path.files:
        for s in substrings:
            if s in file:
                return True
    
    return False
    

    如果您希望它完全由数据库处理,您必须为路径创建一个新表并使用外键,而不是 ArrayField

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 2010-11-20
      • 2012-05-03
      • 2012-05-30
      • 1970-01-01
      相关资源
      最近更新 更多