如何用模板中的信息填充模型的Django隐藏输入字段?

时间:2014-07-13 22:37:53

标签: ajax django-forms django-templates hidden-field

我见过这几次,但从未见过答案。我有一个带隐藏输入字段的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发送数据之前填充隐藏信息。希望这是有道理的。

1 个答案:

答案 0 :(得分:0)

您无法直接从模板中执行此操作。但是你有几个选择。

在您将实例化消息ModelForm传递给模板的视图中,您可以预先填充send_to字段的值。然后,应该使用相同的值在模板中呈现它。这可能就是你想要的。

您的另一个选择是从ModelForm中排除send_to,并将其硬编码为模板中表单中的隐藏字段。 {{message.as_p}}只会呈现可见字段。