san*_*eep 7 python regex mysql django
在数据库中,图像名称以下面的格式保存.
+------------+------------+------------+-----------+
| 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 |
+------------+------------+------------+-----------+
Run Code Online (Sandbox Code Playgroud)
我想通过'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:图像名称始终以数字开头.
至于第一个问题,你可以使用Django ORM提供的正则表达式运算符
例如
Model.objects.filter(adv_images__regex=r'^\d+')[:3]
Run Code Online (Sandbox Code Playgroud)
应根据您设置的顺序输出前3行.
要仅选择整数记录,可能是最简单的解决方案
Model.objects.filter(adv_images__regex=r'^\d\.')[:3]
Run Code Online (Sandbox Code Playgroud)
至于第二个问题,数字是否代表唯一的专辑标识符,或者您的代码段是否缺少关系字段?