0

我有这个表格来添加一个新的实例

class NuevoFormulario(ModelForm):
    class Meta:
        model = Usuario
        widgets = {
            'email': forms.TextInput(attrs={'required':'required'}),
            'account': forms.HiddenInput(),
            'type': forms.HiddenInput(),
        }

在我的模板中,我有这张表..

<table class="table-bordered table-hover">
<tbody>
    {% for field in form %}
        <tr class="control-group {% if field.errors %} alert alert-error error {% endif %}  ">
            <td>
                {{ field.label }}
            </td>
            <td>
                {{ field }}
            </td>
            <td>
                {{ field.errors }}
            </td>
        </tr>
    {% endfor %}
</tbody>

该帐户不得显示在模板中,因为我将在当前用户的视图中将其分配给相同的用户,这应该足够了,(如果我使用表单 as_p 选项它可以工作,但我希望它在一个漂亮的表中并且有更多的控制权,所以我逐场展示。

问题是 hiddenInput 属性只适用于输入,而不是标签,所以我看到了我想要的所有表单,带有一个附加标签 'account' 旁边没有输入(同样发生在 'type' )

我还尝试将其放入小部件中:

'account': forms.TextInput(attrs={'type':'hidden'}),

但同样的结果。我尝试做的另一件事是检查模板是否隐藏了字段类型,如下所示:

{{ field.widget.attrs.type }}

但它什么也没显示,我可以访问的唯一属性是 max_length。

任何解决方案或其他想法?谢谢你的时间!

4

2 回答 2

2

你想像这样改变你的 for 循环

{% for field in form.visible_fields %}

仅迭代可见字段。请参阅此链接以供参考。

此外,要检查该字段是否隐藏,您必须使用 is_hidden:

{% if field.is_hidden %}
   {# Do something special #}
{% endif %}

您将隐藏字段(实际上在您的模板中可用但不可见)与根本不发送的模型字段(可以使用表单元类中的exclude参数实现)混淆了。遍历表单的字段将显示除排除列表中的所有字段(可见和隐藏)。

于 2013-07-02T23:04:03.610 回答
-1

有了forms.HiddenInput()它,就很难有什么东西出现了!我建议您使用 django 密码表单:

'account': forms.RegexField(label ="Password",regex=r'^(?=.*\W+).*$',help_text='',
                    widget=forms.PasswordInput,min_length=6,)
于 2013-07-03T00:02:21.887 回答