0

我通过CreateView生成表单:

#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 和 add.html
一切正常,但在站点中我必须输入slug。现在的问题是:如何在管理面板中自动生成 slug?

我是新手,请提供分步说明

4

2 回答 2

4

需要注意的是,上面的答案每次保存实例都会产生一个新的slug;这对于任何最终将被共享(例如作为 URI 的一部分)的东西都是不好的做法,因为任何带书签的 URI 都将失效。

更完整的答案是如何在 Django 中创建 slug?.

于 2013-11-06T22:09:54.017 回答
1

我喜欢使用这个django 片段为每个项目创建一个独特的 slug。这样,如果您有多个具有相同名称的项目,它将像item-1and一样递增item-2。将代码片段中的代码保存在名为slug.py. 在您的 models.py 中,导入 slug 文件。然后在定义模型类之后,使用以下方法覆盖该save方法unique_slugify

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这将根据您的服务器模型的字段创建一个 slug 。要从不同的字段创建 slug,请将不同的值传递给modulus (%)操作员。

于 2013-01-11T17:54:39.123 回答