我正在尝试在表单集中的隐藏输入字段上传递值。但是,当我点击提交时,我什么也没回来:'form-0-my-field':['']。谁能帮我解决这个问题?

这是我的表格:

class MyForm(forms.Form):
    my_field = forms.CharField(widget=forms.HiddenInput(attrs={
        'class': 'my_field'}))


表格集:

MyFormSet = formset_factory(MyForm, max_num=5)


views.py

def my_view(request):
    if request.method == 'POST':
        formset = MyFormSet(request.POST)
        if formset.is_valid():
            print(formset.cleaned_data)
    else:
        formset = MyFormSet()

    return render(request, 'my_template.html', ctx={'formset': formset})


最后是我的模板,最后是一个脚本,以my_field为目标:

{% for form in formset.forms %}
        {% for field in form.visible_fields %}
            {# Include the hidden fields in the form #}
            {% if forloop.first %}
              {% for hidden in form.hidden_fields %}
                {{ hidden }}
              {% endfor %}
            {% endif %}
            {{ field.errors.as_ul }}
            {{ field }}
          </td>
        {% endfor %}
    <button type="submit">Submit</button>

<script>
document.getElementsByClassName("my_field").value = "some str";
alert(document.getElementsByClassName("my_field").value);
</script>

最佳答案

类可以匹配多个元素。因此,document.getElementsByClassName返回HTMLCollection,即对象数组(注意方法名称中的s)。

要分配值,您需要引用集合中的项目:

document.getElementsByClassName("my_field")[0].value = "some str";


但是,最好通过ID而不是类来实现。

关于javascript - JavaScript不会在Django的formset隐藏输入字段上插入值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50763232/

10-09 18:24