【发布时间】:2017-10-25 20:41:14
【问题描述】:
我在 Stackoverflow 上查看了其他类似的问题,但这些情况不适用于我。
我有一个带有Queue 字段的表单,该字段是必填字段。此表单用于多个地方,在一个这样的例子中,我不希望向用户显示 Queue 字段。所以,我根本没有在模板上渲染它。但是因为这是一个必填字段,所以表单不会提交。如何预先填充此字段,同时对用户隐藏它?
我无法更改模型或表单的保存方法,因为此表单也在其他地方使用。
forms.py
class PublicTicketForm(CustomFieldMixin, forms.Form):
queue = forms.ChoiceField(
widget=forms.Select(attrs={'class': 'form-control'}),
label=_('Queue'),
required=True,
choices=()
)
views.py:
def no_queue(request):
if request.method == 'POST':
form = PublicTicketForm(request.POST, request.FILES)
form['queue'] = 9 # Tried to assign queue value to field, did not work
if form.is_valid():
if text_is_spam(form.cleaned_data['body'], request):
# This submission is spam. Let's not save it.
return render(request, template_name='helpdesk/public_spam.html')
else:
form.save()
else:
form = PublicTicketForm(initial={'queue': 9}) # tried this one too, did not work either
return render(request, 'helpdesk/no_queue.html', {'form': form})
视图中填充了此表单的choices,但因为我没有在模板中呈现它,所以我没有这样做。
【问题讨论】:
-
为什么需要它?
-
因为在其他地方的用户应该可以选择他/她想要将表单信息放入哪个Queue,只有在这个地方我们才隐藏它并使其直接进入带有ID的Queue 9