Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 为什么modelformset总是返回错误;此字段为必填字段“0”;?_Django - Fatal编程技术网

Django 为什么modelformset总是返回错误;此字段为必填字段“0”;?

Django 为什么modelformset总是返回错误;此字段为必填字段“0”;?,django,Django,我尝试在模板中手动呈现modelformset,当我点击submit按钮时,它会给出一个错误,提示“此字段是必需的”。 我创建的modelformset如下所示: from django.forms import modelformset_factory ImageFormset = modelformset_factory(PostImages, fields=('image',), extra=0, can_delete=True) formset = ImageFormset(query

我尝试在模板中手动呈现modelformset,当我点击submit按钮时,它会给出一个错误,提示“此字段是必需的”。 我创建的modelformset如下所示:

from django.forms import modelformset_factory

ImageFormset = modelformset_factory(PostImages, fields=('image',), extra=0, can_delete=True)
formset = ImageFormset(queryset=post.postimages_set.all())
当我像这样渲染modelformset时,一切都正常:

{{ formset.management_form }}
{{ formset.as_p }}
但当我这样渲染它时,我会得到一个错误:

{{ formset.management_form }}
{% for f in formset %}
    <img src="/media/{{ f.image.value}}" style="max-width: 400px;" alt="">
    {{ f.image }}
    {{ f.DELETE }}
{% endfor %}
{{formset.management_form}
{formset%中f的%s}
{{f.image}
{{f.DELETE}
{%endfor%}

模型表单集向表单添加一个隐藏字段,其中包含模型实例主键,以便能够识别哪个对象是哪个对象。手动呈现窗体时,您没有呈现它,这会导致窗体由于找不到它而给您一个错误

作为手动呈现表单的最佳实践,只需在表单隐藏字段上循环并呈现它们:

{{ formset.management_form }}
{% for f in formset %}
    {% for field in f.hidden_fields %}
        {{ field }}
    {% endfor %}
    <img src="/media/{{ f.image.value}}" style="max-width: 400px;" alt="">
    {{ f.image }}
    {{ f.DELETE }}
{% endfor %}
{{formset.management_form}
{formset%中f的%s}
{f.hidden_fields%}
{{field}}
{%endfor%}
{{f.image}
{{f.DELETE}
{%endfor%}