python - 如何为 Django 表单字段设置永久值
问题描述
我正在构建经过身份验证的用户可以添加帖子的博客站点。该表单包含三个字段,包括“用户”字段(显示所有用户列表和一个下拉选项)。问题是经过身份验证的用户还可以看到其他用户名。
我尝试了两种解决方案
- 在模板中渲染时排除此字段或
- 无论选择什么用户名,帖子都会以经过身份验证的用户名保存
但我想要的解决方案
'user' 字段将仅显示经过身份验证的用户的名称,并将与标题和描述一起提交
class BlogForm(forms.ModelForm):
class Meta:
model = Blog
fields = '__all__'
view function
if fm.is_valid():
us = fm.cleaned_data['user']
ti = fm.cleaned_data['title']
ds = fm.cleaned_data['desc']
post = Blog(user=us, title=ti, desc=ds)
messages.success(request, 'Blog Created')
post.save()
{% csrf_token %}
{{form.user.label}}{{form.user}}<br><br>
{{form.title.label}}{{form.title}}
{{form.desc.label}} {{form.desc}}
解决方案
在模型表单中只包含“title”和“desc”字段,因此模板不呈现“user”字段,我们可以在views.py中通过动态设置用户
class BlogForm(forms.ModelForm):
class Meta:
model = Blog
fields = ('title','desc',)
#views.py 这里我们可以通过动态 user=request.user 设置用户
if fm.is_valid():
ti = fm.cleaned_data['title']
ds = fm.cleaned_data['desc']
post = Blog(user=request.user, title=ti, desc=ds)
messages.success(request, 'Blog Created')
post.save()
推荐阅读
- java - 如何在 Eclipse 中使用 SVN 推送
- c# - 焦点子窗口
- azure - Azure 存储 CloudBlockBlob.PutBlockAsync() HTTP 标头之一的值格式不正确。
- php - openssl_pkey_get_private 返回 false
- javascript - 如何将 module.exports 和 map(require.resolve) 转换为实际文件?
- graphql - 在 React 应用程序中,是
优先于 client.query 执行查询? - .htaccess - .htaccess 规则跳过文件名后缀
- python - 使用 isin/transform/merge/groupby/map 的组合来有条件地填充数据框列
- bluez - 在 ubuntu 14.04 上为 bluez 5.49 运行 make 时出错
- java - Graphql - 从 Java 客户端上传文件到 Node.js 服务器