【问题标题】:how to add the slugified field如何添加 slugified 字段
【发布时间】:2010-11-21 14:40:22
【问题描述】:
在创建博客时,我正在使用以下模型类和表单。但是由于我不希望用户自己添加 url(slugified 字段),所以我被卡住了如何在保存模型之前添加 slugified url,如果我是正确的,是否应该在视图中完成。
PS:我正在使用应用程序引擎,我听说 slug 字段不可用。
class Post(db.Model):
title=db.StringProperty(required=True)
url=db.StringProperty(required=True)
content_html=db.TextProperty(required=True)
dateTime=db.DateTimeProperty(auto_now_add=True,required=True)
tags=db.StringListProperty()
class PostForm(djangoforms.ModelForm):
class Meta:
model=Post
exclude=['url']
【问题讨论】:
标签:
django
djangoappengine
【解决方案1】:
您可以在视图中执行此操作,也可以覆盖表单的保存方法。如果您在视图中执行此操作,它将如下所示:
#views.py
from django.template.defaultfilters import slugify
def post_create(request, ...):
...
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
title = form.cleaned_data['title']
slugified_title = str(slugify(title))
post.url = [modify the slugified_title however you want...]
post.save()
...
或者,您可以覆盖表单的保存方法,如下所示:
#forms.py
class PostForm(django.forms.ModelForm):
class Meta:
model=Post
exclude=['url']
def save(self, commit=True, force_insert=False, force_update=False):
post = super(PostForm, self).save(commit=False)
slugified_title = str(slugify(post.title))
post.url = [modify the slugfield_title however you want...]
post.save()