gpt4 book ai didi

django - 模型表单集 - 默认情况下,模型表单集呈现一个额外的字段(总共 2 个字段)

转载 作者:行者123 更新时间:2023-12-01 00:50:07 27 4
gpt4 key购买 nike

我的模型表单集甚至没有在 modelformset_factory 中定义“额外”参数,而是在模板中呈现一个额外的字段。我尝试了许多变体,但没有奏效。如果我在命令行上打印表单(模型表单),它只会根据需要打印一个表单字段,但在模型表单集上,它默认打印 2。

这是我的代码。

模型.py

class Direction(models.Model):
text = models.TextField(blank=True, verbose_name='Direction|text')

forms.py
class DirectionForm(forms.ModelForm):
class Meta:
model = Direction
fields = ['text',]

View .py
def myview(request):
Dirset = modelformset_factory(Direction, form=DirectionForm)
if request.method == "POST":
dir_formset = Dirset(request.POST or None)
if dir_formset.is_valid():
for direction in dir_formset:
text = direction.cleaned_data.get('text')
Direction.objects.create(text=text)
return render(request, "test/test.html", {'DirFormSet':Dirset})

模板
{% block content %}
<form method="POST">{% csrf_token %}
<div id="forms">
{{DirFormSet.management_form}}
{% for form in DirFormSet %}
{{form.text}}
{% if error in form.text.errors %}
{{error|escape}
{% endif %}
{% endfor %}
</div>
<button id="add-another">add another</button>

<input type="submit" />
</form>

{% endblock %}

作为旁注,如果我在此表单上提交数据,则会出现以下错误。
错误
Exception Type: MultiValueDictKeyError
Exception Value:"u'form-0-id'"

最佳答案

默认情况下, modelformset_factory 创建一个额外的表格。如果你不想要任何额外的表格,设置 extra=0 .

Dirset = modelformset_factory(Direction, form=DirectionForm, extra=0)
KeyError是因为您没有包含表单的 id模板中的字段。你应该有类似的东西:
{% for form in dir_formset %}
{{ form.id }}
{{ form.text }}
...
{% endfor %}

请注意,您应该传递表单集实例 dir_formset渲染模板时,而不是类 DirFormSet .你的观点应该是这样的
return render(request, "test/test.html", {'dir_formset': dir_formset})     

那么模板应该更新为使用 dir_formset而不是 DirFormSet .

关于django - 模型表单集 - 默认情况下,模型表单集呈现一个额外的字段(总共 2 个字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31774076/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com