You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何基于filename字段按顺序匹配terms和conditions过滤QuerySet

解决方法

你的代码存在两个关键问题:

  1. 正则里用了单数的term和condition,但目标文件名包含的是复数形式的terms和conditions
  2. 正则逻辑没有同时确保两个单词都存在且顺序符合要求

正确的QuerySet写法如下,用不区分大小写的正则匹配完整单词,且保证terms在conditions之前:

file = Files.objects.filter(
    filename__iregex=r'\bterms\b.*\bconditions\b'
).first()

说明:

  • \b是单词边界标记,确保匹配的是完整的terms和conditions单词,避免误匹配包含这些字符串的其他词汇(比如terminology)
  • .*匹配两个单词之间任意长度的内容(包括空格、其他字符)
  • iregex参数让匹配不区分大小写,能兼容诸如Terms And Conditions这类大小写混合的文件名

如果你的文件名里存在下划线这类被视为单词字符的分隔符,导致\b无法正确识别边界,可以改用以下正则,明确匹配单词前后的非单词字符或字符串首尾:

file = Files.objects.filter(
    filename__iregex=r'(^|\W)terms(\W|$).*(^|\W)conditions(\W|$)'
).first()

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 11:17:28