如何在Django查询中使用regex

2024-05-17 00:59:05 发布

您现在位置:Python中文网/ 问答频道 /正文

在数据库中,图像名称以以下格式保存。

+------------+------------+------------+-----------+
| 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”从数据库组中提取数据,例如,它在数据库中显示了11条记录,但我只想提取3条,即1.jpg、2.jpg和3.jpg。基本上1,2,3是专辑的主要图像,1a,1b,2a,2b等是子图像。我试图在django查询中使用正则表达式,但没有成功。我还想为每个相册的图像数计数。就像专辑1和2的计数将是4和专辑3的计数将是3。

N:B:图像名称总是以数字开头。


Tags: 数据图像名称id数据库date格式记录
1条回答
网友
1楼 · 发布于 2024-05-17 00:59:05

至于第一个问题,您可以使用Django ORM提供的regex operator

例如

Model.objects.filter(adv_images__regex=r'^\d+')[:3]

应该根据您设置的顺序输出前3行。

如果只选择整数记录,最简单的解决方案可能是

Model.objects.filter(adv_images__regex=r'^\d\.')[:3]

至于第二个问题,这个数字是表示一个唯一的相册标识符,还是您的代码片段缺少一个关系字段?

相关问题 更多 >