从文件名字段中过滤查询集,基于两个一个接一个出现的单词Django

vfwfrxfs  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(76)

我有一个Files表,其中包含各种字段,其中之一是filename。在此表中的每个文件中,都有一个我想检索的特定文件,基本上是一个条款和条件。此文件名本身将始终包含单词'terms'和'conditions',并且它将始终按照该顺序。然而,在“条款”和“条件”周围可以有其他词。
例如,文件名可以是“我的新条款和条件”或“我的更好的条款等等条件”。
我试图写一个查询集,将检索这样一个文件使用正则表达式,但我不能这样做。到目前为止,我有这样的东西:

file = Files.objects.filter(
    Q(filename__iregex=r'(^|\W){}.*({}|$)'.format("term", "condition"))
).first()

字符串
但这不管用

fhg3lkii

fhg3lkii1#

你没什么选择。
1.过滤两次,这将在下面创建子查询

file = Files.objects.filter(filename_icontains="term").filter(filename_icontains="condition").first()

字符串
1.你可以通过regex来实现这一点,正如你所尝试的那样。

file = Files.objects.filter(filename__iregex=r"^.*term.*condition.*$").first()

相关问题