2013-01-11 26 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?