Почему возникает ошибка формы Django inlineformset_factory "The view shop.views.view didn't return an HttpResponse object. It returned None instead"?

Как мне позволить добавление строки в inlineformset при нажатии кнопки, если после этого возникает ошибка "The view shop.views.view didn't return an HttpResponse object. It returned None instead"?
  • 16 апреля 2024 г. 11:20
Ответы на вопрос 2
Ошибка "The view shop.views.view didn't return an HttpResponse object. It returned None instead" возникает, если в вашем представлении (view) использующем inlineformset_factory, не возвращается объект HttpResponse, а возвращается значение None.

Чтобы позволить добавление строки в inlineformset при нажатии кнопки, необходимо убедиться, что ваше представление правильно обрабатывает POST-запросы и возвращает HttpResponse. Вам нужно будет изменить представление таким образом, чтобы после добавления строки в inlineformset оно возвращало HttpResponse с перенаправлением на другую страницу или же с выводом сообщения об успешном добавлении данных.

Примерно так может выглядеть измененное представление:

```python
from django.http import HttpResponse
from django.shortcuts import render, redirect

from .models import ParentModel
from .forms import ChildFormset

def add_child(request, parent_id):
    parent = ParentModel.objects.get(pk=parent_id)
    ChildFormset = inlineformset_factory(ParentModel, ChildModel, fields=('name',), extra=1)
    
    if request.method == 'POST':
        formset = ChildFormset(request.POST, instance=parent)
        if formset.is_valid():
            formset.save()
            return redirect('some-success-url')
    else:
        formset = ChildFormset(instance=parent)
    
    return render(request, 'add_child.html', {'formset': formset})
```

Как видно из примера, после сохранения формы и проверки валидности данных, представление возвращает HttpResponse с перенаправлением на другую страницу. Важно также убедиться, что у вас корректно настроены URL-адреса в файле urls.py для обработки этого представления.
Сам нашёл ответ 
Django Inline Formset Factory with Examples
Похожие вопросы