首页 > 解决方案 > 如何为 Django 表单字段设置永久值

问题描述

我正在构建经过身份验证的用户可以添加帖子的博客站点。该表单包含三个字段,包括“用户”字段(显示所有用户列表和一个下拉选项)。问题是经过身份验证的用户还可以看到其他用户名。

我尝试了两种解决方案

  1. 在模板中渲染时排除此字段或
  2. 无论选择什么用户名,帖子都会以经过身份验证的用户名保存

但我想要的解决方案

'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}}

标签: pythondjangoformsfield

解决方案


在模型表单中只包含“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()

推荐阅读