我通过 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 and add.html
一切都运作良好,但在网站上我必须输入 slug 。现在的问题是:如何在管理面板中自动生成slug?
我是newbi,所以我请逐步说明
答案 0 :(得分:3)
应该注意的是,每次保存实例时,上面的答案都会产生一个新的slug;对于任何最终被共享的内容(例如作为URI的一部分)而言,这是不好的做法,因为任何带有书签的URI都将失效。
答案 1 :(得分:1)
我喜欢使用此django snippet为每个项目创建一个独特的slug。这样,如果您有多个具有相同名称的项目,它将会增加item-1
和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 (%)
运算符传递不同的值。