我正在尝试在Django中使用表单集,但遇到了我不理解的问题。我得到的错误是
[{'id': ['This field is required.']}, {}]
这里是背景:在models.py中,我有
class Ledighet(models.Model):
person = models.ForeignKey(Personal,on_delete=models.CASCADE)
start_date = models.DateField()
end_date = models.DateField()
在forms.py中,我只有一行
LedighetFormset = inlineformset_factory(Personal,Ledighet,fields = ('start_date', 'end_date'),extra=1)
在views.py中,我有
def rapportera_ledighet(request,person_id):
person = get_object_or_404(Personal,id = person_id)
if request.method == 'POST':
formset = LedighetFormset(request.POST,instance=person)
if formset.is_valid():
formset.save()
formset = LedighetFormset(instance=person)
context={'person' : person, 'formset' : formset}
return render(request, 'schema/rapportera_ledighet.html', context)
,并且html文件中的关键代码是
<form method="post">{% csrf_token %}
{{ formset.management_form }}
<table class="table table-striped">
{% for f in formset %}
<tr><td>{{ f.start_date }}</td><td>{{ f.end_date}}</td><td>{{ f.fraction }}</td><td>{{ f.typ }}</td></tr>
{% endfor %}
</table>
<input type="submit" value="Updatera" />
</form>
表单看起来像我想要的样子,但是出现上面的错误。
我在做什么错?
答案 0 :(得分:0)
inlineformset_factory
使用modelformset_factory()
期望使用ModelForm
将您的Ledighet
表单更改为模型表单
class Ledighet(ModelForm):
...
它应该可以工作..
您还可以尝试将id
字段添加到当前表单类中
请参阅此处获取模型表格 (https://docs.djangoproject.com/en/2.0/topics/forms/modelforms/)