【问题标题】:How to pass a value to Django-Modelform in InputHidden IntegerField without even disturbing visible field in template如何在 InputHidden IntegerField 中将值传递给 Django-Modelform,甚至不干扰模板中的可见字段
【发布时间】:2012-02-28 09:45:34
【问题描述】:

我创建了一个 Django 模型,其中包含三个字段,其中一个是隐藏的,其余的是可见的

1.CharField
2.IntegerField (Hidden Field)
3.DateTimeField

我使用以下代码将其隐藏:

class HostCreateForm(forms.ModelForm):
    class Meta:
        model = Host
        widgets = {
            'Zone_Vale': forms.HiddenInput()
          }

要查看此表单,我在我的模板中使用以下代码:

<form action="" method="POST">
    {{ form.as_p }}
    <input type="submit" value="{% trans "Add host" %}" />

一切都很好,但我也想在这个输入隐藏层中传递一个变量。我没有任何想法这样做。我试图通过自定义模板来做(参考这个链接:)https://docs.djangoproject.com/en/dev/topics/forms/` 例如 {{ form.as_p}} 将返回一个包含两个可见字段的表单,其中的数据是:(用户输入的内容)和一个隐藏字段。所以,我想从 template.html 文件中将一个变量传递给该隐藏字段

它也不起作用。需要你的帮助

【问题讨论】:

标签: django django-models django-forms django-templates


【解决方案1】:

如果您觉得自己很脏,一个快速的解决方案是使用 javascript 填充此字段。正确的方法应该是在 view.py 实例化表单对象时使用“initial”参数

参考:https://docs.djangoproject.com/en/1.3/ref/forms/api/#django.forms.Form.initial

即使是非常肮脏,一些像这样的 javascript 解决方案也应该可以工作: (使用 jQuery。适应你的需要)

<script type="text/javascript">
    $(document).ready(function(){
        $('form input[name$="Zone_Vale"]').val(DESIRED_HIDDEN_VALUE)
    })
</script>

但不要为这样做而感到自豪。

【讨论】:

  • 感谢您的回复。我已经在我的帖子中提到,我只想从模板中传递一个值,而不是在检查表单时。所以“初始”参数将不起作用:) 我有一个 java 脚本变量如何传递给该隐藏字段。如果我没有错,那么只有一件事要做,即传入模板,我无法弄清楚。等待您的回复:)
  • 使用 javascript 填充该字段。通过上下文将表单前缀+id 传递给模板并使用它来获取输入字段。然后设置值。
【解决方案2】:

鉴于您呈现模板的方式,您将无法在模板级别将变量传递给字段。

如果你真的,绝对必须在模板级别向表单传递一个变量,我建议创建一个模板标签:

  1. 从请求上下文中解析您的变量
  2. 使用变量作为表单初始数据的一部分来实例化表单类
  3. 将表单添加到要呈现的上下文中

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多