2013-01-11 46 views
0

我通過CreateView的產生形式:Django - 如何在窗體中自動生成slu??

#urls.py 
url(r'^add/$', ServerAdd.as_view(template_name="add.html")), 

#views.py 
from django.views.generic import CreateView 
from servers.models import Server 

class ServerAdd(CreateView): 
model = Server 
success_url = '/index/' 

models.py and add.html
一切運作良好,但在現場我必須進入。現在的問題是:如何在管理面板中自動生成slu??

我newbi所以我請了一步一步的指示

回答

1

我喜歡用這個django snippet創建每個項目的唯一塞。這樣,如果您有多個具有相同名稱的項目,則它將像item-1item-2一樣增加。將片段中的代碼保存在名爲slug.py的文件中。在您的models.py中,導入slug文件。然後定義後,模型類,過騎使用unique_slugifysave方法:

from myapp.slug import unique_slugify 

class Server(models.Model): 
    name = models.Charfield(max_length=20) 
    .... 

    def save(self, **kwargs): 
     slug = '%s' % (self.name) 
     unique_slugify(self, slug) 
     super(Server, self).save() 

這將創建一個基於服務器型號的name領域的蛞蝓。要從其他字段創建一個段落,請將不同的值傳遞給modulus (%)運營商。

3

應該注意的是,上面的答案會在每次保存實例時生成一個新的slug;對於任何會被共享的內容(例如作爲URI的一部分)來說,這是不好的做法,因爲任何書籤化的URI將會失效。

更完整的答案是How do I create a slug in Django?