Django model formset, "(Hidden field id) This field is required".
Я пытаюсь использовать modelformset
для обновления существующих объектов, но не могу добиться отправки формы, потому что (я предполагаю) идентификатор, связанный с каждым объектом, не передается формой. Я вижу "(Скрытый идентификатор поля) Это поле обязательно." в шаблоне.
Мой код models.py:
class FoodItem(models.Model):
name = models.CharField(max_length = 100)
views.py:
def edit(request):
FormSet = modelformset_factory(FoodItem, include = ('name',))
if request.method == 'POST':
formset = FormSet(request.POST)
if formset.is_valid():
formset.save()
else:
formset = FormSet(queryset=FoodItem.objects.all())
return render(request, 'core/edit.html', {'formset': formset})
и шаблон:
<form class="" action="." method="post" enctype="multipart/form-data">
{{ formset.management_data }}
{% csrf_token %}
{{ formset.as_p }}
<input type="submit" name="" value="Update">
</form>
Я также пробовал визуализировать каждый из них по отдельности и включая hidden_fields
:
<form class="" action="." method="post" enctype="multipart/form-data">
{{ formset.management_data }}
{% csrf_token %}
{% for form in formset %}
{{form.as_p}}
{{form.hidden_fields}}
{% endfor %}
<input type="submit" name="" value="Update">
</form>
но это не сработало. Спасибо за любую помощь.
Changed
FormSet = modelformset_factory(FoodItem, include = ('name',))
на
FormSet = modelformset_factory(FoodItem, include = '__all__')
и все прояснилось, думаю, если вы передаете кортеж в параметр include, вы должны вручную включить поле id.