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.

Вернуться на верх