2017-08-05 68 views
1

我有一个ArrayField字符串,我想搜索是否有任何项目包含预期的一组字符串中的任何项目。如何在django数组字段中执行全文搜索

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

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的组合。

回答

1

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

如果你有在变量path一个Path对象,你正在寻找substrings字符串,你可以这样做:

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

return False 

如果你想让它纯粹是由数据库你”来处理必须为路径创建一个新表并使用外键,而不是ArrayField

相关问题