2017-08-05 33 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

相關問題