我有包含數據的表。是否有可能在現有的表上自動生成slug字段?還是有其他的選擇嗎?由於 這裏是我的表在現有表中生成slug字段
回答
使用slugify
模板過濾器,你可以通過在shell中的對象編寫腳本,或循環。
>>> from django.template.defaultfilters import slugify
>>> for obj in MyModel.objects.all():
... obj.slug = slugify(obj.title)
... obj.save()
爲此,您可以在MySQL像這樣(代替你的表的名稱爲「表名」):
UPDATE `tableName` SET `slug`=LOWER(REPLACE(`title` , ' ' , '-'));
這改變了遊戲,比如「這是一個標題「slu like」這是一個標題「。
編輯爲了處理括號,並刪除雙空間使用:
UPDATE `tableName` SET `slug`=LOWER(REPLACE(REPLACE(REPLACE(REPLACE(`title` , '(' , '') , ')' , '') , ' ' , ' ') , ' ' , '-'));
謝謝但我的標題也有'圓括號' –
我編輯清除括號以及。您可以繼續嵌套REPLACE(),直到處理完所有目標字符。 –
這太棒了,但我想要兩列像標題和類別slu g。那麼將會是什麼查詢。 –
我有一個方便的模型,我用於這些類型的東西的所有項目。我認爲這是一個如何做你想做的事情的好例子。
from django.template.defaultfilters import slugify
class NameAndSlug(models.Model):
'''
convenience model for things that are just names
'''
name = models.CharField(max_length=200, unique=True)
slug = models.SlugField()
def __unicode__(self):
return self.name
def save(self, *args, **kwargs):
"""
Slugify name if it doesn't exist. IMPORTANT: doesn't check to see
if slug is a dupe!
"""
if not self.slug:
self.slug = slugify(self.name)
super(NameAndSlug, self).save(*args, **kwargs)
class Meta:
abstract = True
謝謝。爲什麼我得到這個錯誤? 'def __unicode __(self): IndentationError:unindent不匹配任何外部縮進級別' –
檢查你的空白。你有太多或太少的空間嗎?你在混合製表符和空格嗎? – Alasdair
- 1. Slug字段在SQL Alchemy/FlaskAdmin
- 2. Django FileField根據ForeignKey記錄的slug字段生成路徑
- 3. 如何從漢字生成url slug?
- 4. 在wordpress中顯示多字段slug types_render_field
- 5. 有限的長度slug字段
- 6. 如何從中文文本生成slug?
- 7. friendly_id slug在創建時不生成
- 8. 在報表生成器3.0中按時間段生成計算字段
- 9. 使用Django中的現有ORM數據生成選擇字段
- 10. 自動生成表單字段在PHP
- 11. 通過表格生成MDB中所有字段的列表
- 12. Unmarshal在列表上生成空字段<T>字段
- 13. 有沒有辦法在ascx中從sharepoint 2010列表中生成輸入字段
- 14. 隨機生成字與現有字
- 15. Symfony 2 - 用Gedmo \ Slug生成S 012
- 16. MongoDB更新:根據現有字段生成新字段,或更新到位
- 17. 在MySQL中生成字段SELECT
- 18. 在grails中自動生成字段
- 19. 生成表單字段從XML標籤
- 20. 驗證AJAX生成的表單字段
- 21. SonataAdmin:爲enum生成表單字段?
- 22. Spring Roo生成的表單字段
- 23. 獲得表單字段的生成clientid
- 24. 流星動態表單字段生成
- 25. 如何在Rails 3中爲生成的模型啓動slug mongoid_slug?
- 26. 重新生成所有ComputedProperty字段
- 27. 在動態生成的字段中添加組字段名稱
- 28. 註冊表中生成生日字段的可能方式
- 29. 將slug字段傳遞給url
- 30. jQuery生成的輸入字段:在PHP中讀取表單值?
我可以自動執行此操作嗎? –
我不確定你的意思。上面的代碼片段將爲數據庫中的所有現有記錄設置段落。如果您想更新未來添加的所有記錄的slug,那麼您可以覆蓋save方法 - 例如,請參閱@ Tom的答案。 – Alasdair
@感謝但是得到錯誤。 'NameError:名稱'實例'未定義' –