我有一個有FileField欄位的模型,在這個模型中我們有數百萬條記錄。
class MyModel(models.Model):
media = models.FileField(upload_to=my_function, db_index=True)
...
這些媒體記錄存盤在資料庫中;
- 媒體/一些/檔案夾/檔案名.jpg
- 媒體/檔案名.jpg
- 媒體/2021091240-10328.JPG
- 媒體/aXay-123.jpeg
- 媒體/一些/另一個/檔案夾/202110-12-12.jpeg
等等,我需要找到沒有嵌套路徑的記錄,例如/some/folder/或/some/another/folder/使用 django orm__iregex查找。
所以,我嘗試了類似的東西;
MyModel.objects.filter(media__iregex=r"^media/[0-9a-zA-Z\-][.][a-zA-Z]")
但它不匹配,我不明白撰寫正確的正則運算式[mysql regexp]。
如何使用 Django orm 使用 mysql regexp 進行過濾以獲取僅具有模式的記錄;media/filename.extension?
uj5u.com熱心網友回復:
您的正則運算式沒有量詞,因此將為字符組選擇一個字符[0-Aa-zA-Z\-]。
您可以簡單地過濾掉包含至少兩個斜杠的元素:
MyModel.objects.filter(media__iregex=r'^media/[^/] $')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/327162.html
標籤:mysql 姜戈 django-orm mysql-正则表达式
