【问题标题】:how to populate Django hidden input field of modelform with info from template?如何使用模板中的信息填充模型表单的 Django 隐藏输入字段?
【发布时间】:2014-09-03 20:06:25
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 2010-12-11
      • 2011-01-06
      • 2017-11-18
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      相关资源
      最近更新 更多