Python 如何在Django中向表单提交添加预填充字段?(类似于管理)

Python 如何在Django中向表单提交添加预填充字段?(类似于管理),python,django,forms,slug,Python,Django,Forms,Slug,我把表单渲染得很好,数据保存得很好,只是不像在管理中那样创建slug。我希望在提交表单时,slug会自动创建。谢谢你的帮助 代码: Models.py: 班级职务(时间戳激活): title=models.CharField(最大长度=255, help_text=“文章标题。最多可以是255个字符。”) slug=models.SlugField() 摘录=models.TextField(空白=True, help_text=“您的内容的小摘要”) body=models.TextField

我把表单渲染得很好,数据保存得很好,只是不像在管理中那样创建slug。我希望在提交表单时,slug会自动创建。谢谢你的帮助

代码:

Models.py:
班级职务(时间戳激活):
title=models.CharField(最大长度=255,
help_text=“文章标题。最多可以是255个字符。”)
slug=models.SlugField()
摘录=models.TextField(空白=True,
help_text=“您的内容的小摘要”)
body=models.TextField()
publish_at=models.DateTimeField(默认值为datetime.datetime.now(),
help_text=“日期和时间公告应可见。”)
blog=models.ForeignKey(blog,related_name=“posts”)
tags=TaggableManager()
objects=PostManager()
def ___; unicode(自):
返回自己的标题
@permalink模型
def get_绝对_url(自身):
返回('post',(){
“blog”:self.blog.slug,
“slug”:self.slug
})
类元:
排序=['-publish_at','-modified','-created']
Views.py:
def add2(请求):
如果request.method==“POST”:
form=BlogPostForm(request.POST)
如果(form.is_valid()):
message=“感谢您的反馈”
form.save()
返回render\u to\u响应('add.html',
{'success':message},
上下文\实例=请求上下文(请求))
其他:
返回render\u to\u响应('add.html',
{'form':BlogPostForm},
上下文\实例=请求上下文(请求))
Forms.py:
类BlogPostForm(forms.ModelForm):
类元:
型号=员额
排除=('id','user','slug')
Admin.py:
类PostAdmin(admin.ModelAdmin):
预填充的_字段={“slug”:(“title”,)}
列表显示=(“活动”、“标题”、“摘录”、“发布位置”)
列表\显示\链接=('title',)
列表_可编辑=(‘活动’,)
列表过滤器=('modified'、'publish\u at'、'active')
日期\u层次结构='publish\u at'
搜索字段=[“标题”、“摘录”、“正文”、“博客名称”、“博客用户用户名”]
字段集=(
(无{
'字段':('title','blog'),
}),
(“出版物”{
'fields':('active','publish_at'),
“描述”:“控制是否以及当一篇文章对世界可见时”,
}),
(“内容”{
'字段':('摘录','正文','标记',),
}),
(“可选”{
'字段':('slug',),
'classes':('collapse',)
})
)
管理站点注册(Post、PostAdmin)

管理员中的slug由javascript(客户端)预先填充。如果您也希望在表单中使用此功能,那么您也必须使用一些javascript(客户端),或者为您的Post模型编写一个自定义保存函数,该函数可以使用djangos slugify过滤器(服务器端)

例如:

from django.template.defaultfilters import slugify
class Post(models.Model):
    #### define fields and other functions here ###
    def save(self, *args, ***kwargs):
        self.slug = slugify(self.title)
        super(Post, self).save(*args, **kwargs)

那么,您建议使用javascript来实现类似的功能吗?这取决于您想要实现的目标。为了给一篇博客文章一点帮助,我会选择服务器端版本。Jingo,谢谢你的帮助。我仍然知道stackoverflow,所以我正在研究如何正确回复帖子。我感谢你的帮助。
from django.template.defaultfilters import slugify
class Post(models.Model):
    #### define fields and other functions here ###
    def save(self, *args, ***kwargs):
        self.slug = slugify(self.title)
        super(Post, self).save(*args, **kwargs)