如何在 django 查询中使用正则表达式
Posted
技术标签:
【中文标题】如何在 django 查询中使用正则表达式【英文标题】:How to use regex in django query 【发布时间】:2013-04-27 20:10:11 【问题描述】:在数据库中,图像名称以以下格式保存。
+------------+------------+------------+-----------+
| adv_images | start_date | end_date | id |
+------------+------------+------------+-----------+
| 1.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 1a.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 1b.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 1c.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 2.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 2a.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 2b.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 2c.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 3.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 3a.jpg | 2013-05-22 | 2013-05-28 | 64 |
| 3b.jpg | 2013-05-22 | 2013-05-28 | 64 |
+------------+------------+------------+-----------+
我想通过“adv_images”从 db 组中提取数据,例如,它在 db 中显示 11 条记录,但我只想提取 3 条 ie(1.jpg、2.jpg 和 3.jpg) .基本上1、2、3是专辑的主图像,1a、1b、2a、2b等是子图像。我正在尝试在 django 查询中使用正则表达式,但没有成功。我还想计算每个专辑的图像数量。比如专辑 1 nd 2 的计数为 4,专辑 3 的计数为 3。
N:B:图像名称始终以数字开头。
【问题讨论】:
你是如何保存和复制数据库格式的,我以为是图片。 【参考方案1】:至于第一个问题你可以使用Django ORM提供的regex operator
例如
Model.objects.filter(adv_images__regex=r'^\d+')[:3]
应根据您设置的顺序输出前 3 行。
只选择整数记录最简单的解决方案可能是
Model.objects.filter(adv_images__regex=r'^\d\.')[:3]
至于第二个问题,数字代表唯一的专辑标识符,还是您的sn-p缺少关系字段?
【讨论】:
以上是关于如何在 django 查询中使用正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的 Django urls.py 中使用单个正则表达式捕获多个参数?