如何用Django Model Filter筛选特定格式的URL字符串?
问题解答
你写的myModel.Objects.filter(url="/myapi/****/")这种方式不可行,Django ORM并不支持用****作为通配符来模糊匹配。
以下是几种实现你需求的方法:
组合字段查找(通用方法)
先匹配以/myapi/开头且以/结尾的记录,再排除掉正好等于/myapi/的条目,就能筛选出带后缀的目标数据:myModel.objects.filter(url__startswith="/myapi/", url__endswith="/").exclude(url="/myapi/")正则表达式匹配(精准匹配数字后缀)
如果你的后缀都是数字,用正则表达式能更精准地筛选,避免匹配到其他非数字后缀的记录:myModel.objects.filter(url__regex=r'^/myapi/\d+/')这个正则的意思是:必须以
/myapi/开头,后面跟一个或多个数字,最后以/结尾,正好对应你表中id=1、3的记录。简单包含匹配(适合无其他特殊后缀场景)
如果确定表中除了/myapi/和/myapi/数字/外没有其他格式的url,也可以用包含匹配加排除:myModel.objects.filter(url__contains="/myapi/").exclude(url="/myapi/")但注意这个方法不够精准,如果有
/myapi/abc/这类记录也会被筛选出来,所以优先推荐前两种方法。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

