2013-05-03 43 views
1

在數據庫中,圖像名稱以下面的格式保存。如何在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 | 
+------------+------------+------------+-----------+ 

我想通過「adv_images」拉從DB組數據,爲前這裏它顯示在DB 11分的記錄,但我想拉只有3個,即(1.JPG,2.JPG和3.JPG)。基本上,1,2,3是專輯的主要圖像,1a,1b,2a,2b等是子圖像。我想在django查詢中使用正則表達式,但沒有成功。我也想要爲每個專輯的圖像數量計數。對於專輯1和2,計數將是4,專輯3的計數將是3.

N:B:圖像名稱始終以數字開頭。

回答

4

對於第一個問題可以使用regex operator Django的ORM提供

例如

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

應根據您設置的順序輸出前3行。

,只選擇整數記錄了簡單的解決方案可能是

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

至於第二個問題,確實數字代表一個獨特的專輯標識符,或者您的片段缺少一個關係領域?