[英]How to set a permanent value to a Django Form Field
我正在构建经过身份验证的用户可以添加帖子的博客站点。 该表单包含三个字段,包括“用户”字段(显示所有用户列表和一个下拉选项)。 问题是经过身份验证的用户还可以看到其他用户名。
我尝试了两种解决方案
但我想要的解决方案
'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}}
在您的表格中 class
def __init__(self, *args, **kwargs):
super(YourForm, self).__init__(*args, **kwargs)
self.fields['user'].disabled = True
初始化您的表单:
data = {'user': request.user}
fm = YourForm(initial=data)
下一个:
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()
您的表单将从请求中获取用户,因此您对表单中的用户没有任何依赖关系。
在 model 表单中只包含“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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.