Как обновить сразу несколько строк, используя Django forms.ModelForm в views.py - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь обновить многие строки модели на основе пользовательского ввода, но у меня возникают проблемы с обновлением их в views.py.

Я создаю modelForm

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ["book_title", "book_title_2"]

В мои представления

def my_view(request):
    query = MyModel.objects.filter(foo=foo)
    forms = [MyForm(instance=q) for q in query]
    context["forms"] = forms

В шаблонах я перебираю формы и входные данные для некоторых строк. Обычно при отправке формы я знаю, что могу использовать form = MyForm(request.POST) и атрибуты is_valid() и save() для сохранения новых данных в моей модели. Но когда я использую список форм, как указано выше, для обновления многих экземпляров, как я могу на самом деле сохранить формы в views.py? Когда я звоню MyForm(request.POST) после отправки всех запрошенных форм сразу, я получаю эту ошибку 'WSGIRequest' object has no attribute 'FORM' . Когда я смотрю на данные публикации, я вижу список значений для book_title и book_title_2. Похоже, что поскольку я отправляю более одной формы, это не работает. Есть ли обходной путь для этого? Спасибо

1 Ответ

0 голосов
/ 04 августа 2020

Как указано в комментариях Willem Formsets, это именно то, что необходимо для обработки нескольких форм в представлениях. В моем случае, когда я создаю несколько форм на основе модели и набора запросов этой модели, modelformset_factory сработало

...