我见过这几次,但从未见过答案。我有一个带隐藏输入字段的Django ModelForm。我需要使用我的模板中的信息来隐藏字段 - 在这种情况下是'send_to'字段。
所以我有一个用户可以写主题和消息的表单,我想自动填充“到”字段。
这是我的模型形式:
class MessageForm(ModelForm):
class Meta:
model = Message
fields = ['subject', 'message', 'send_to']
widgets = {'send_to': forms.HiddenInput()}
'send_to'部分需要填充我模板中的信息。
<form method="post" action="{% url 'send' %}" id="commiserator" name="{{ c.id }}" class="write-to-user" enctype="multipart/form-data">
<h3>To: {{ c.username }}</h3>
{% csrf_token %}
{{message.as_p}}
<input id="commiserator" class="write-to-user" type="submit" value="Send">
现在{{c.username}}只显示为html。我希望它被用作隐藏字段的表单输入,但我不知道如何做到这一点。
使用Ajax将表单发送到视图,因此我希望在Ajax发送数据之前填充隐藏信息。希望这是有道理的。
答案 0 :(得分:0)
您无法直接从模板中执行此操作。但是你有几个选择。
在您将实例化消息ModelForm传递给模板的视图中,您可以预先填充send_to字段的值。然后,应该使用相同的值在模板中呈现它。这可能就是你想要的。
您的另一个选择是从ModelForm中排除send_to,并将其硬编码为模板中表单中的隐藏字段。 {{message.as_p}}
只会呈现可见字段。