如果我有一個對象的名稱Object 1
,我想get()
該對象,但我試圖得到它與slugified名object-1
,有沒有辦法做到這一點?例如:Django - Slugify得到查找
Model.objects.get(name__slugify = slugifiedname)
我想避免在模型中添加額外的slug字段(如果可能的話)。
如果我有一個對象的名稱Object 1
,我想get()
該對象,但我試圖得到它與slugified名object-1
,有沒有辦法做到這一點?例如:Django - Slugify得到查找
Model.objects.get(name__slugify = slugifiedname)
我想避免在模型中添加額外的slug字段(如果可能的話)。
您將需要把一些限制在「名稱」字段的值只允許[-A-ZA-Z] +,但你可以這樣做:
def my_request(request, name):
un_slugified_name = name.replace('-', '')
objects = MyModel.objects.get(name=unslugified_name)
但是,通過查詢字符串傳遞的名稱必須與數據庫中的名稱完全相同。因人而異。我的建議是,使用SlugField :)
Slugify是一個Python函數。爲了實現您的目標,Django必須獲取完整的數據庫(至少包含pk和name
字段),計算每行的段落並將其與給定參數進行比較。而這將是非常imperformant,所以:
TLDR:沒有
同意你的觀點,但如果由塞查找是真的* *爲OP重要的是,它可以添加一個新的數據庫列,以持續跟蹤。不是最佳做法,但可以完成。 – Paolo 2014-09-19 19:48:36