Создание объектов модели из пользовательской формы / набора форм в Django - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь создать простое приложение Django, в котором я хочу иметь набор Question объектов.Каждый вопрос имеет свой список доступных ответов.Я хочу отобразить ряд этих вопросов на виде и создать объекты на основе пользовательских данных.

Это последняя часть (создание объектов на основе пользовательских данных), которую я не могу выполнить.Вот что у меня есть:

class BaseQuestionFormset(BaseFormSet):
    def __init__(self, question_list, *args, **kwargs):
        super(BaseQuestionFormset, self).__init__(*args, **kwargs)
        self.question_list = question_list

    def get_form_kwargs(self, index):
        kwargs = super(BaseQuestionFormset, self).get_form_kwargs(index)
        if self.question_list and index < len(self.question_list):
            kwargs['question'] = self.question_list[index]
        else:
            kwargs['question'] = None
        return kwargs

class QuestionForm(forms.Form):
    def __init__(self, question, *args, **kwargs):
        super(QuestionForm, self).__init__(*args, **kwargs)
        if question:
            choice_list = [x for x in question.get_answers_list()]
            self.fields["answers"] = forms.ChoiceField(choices=choice_list,
                                                widget=RadioSelect)

            self.fields['answers'].label = question.content

Я создаю форму следующим образом:

question_formset = formset_factory(QuestionForm, BaseQuestionFormset, extra=len(questions))
formset = question_formset(question_list=questions)

Затем, когда я получаю пользовательский ввод, я создаю набор форм следующим образом:

question_formset = formset_factory(QuestionForm, BaseQuestionFormset, extra=3) // 3 is for debug purposes
formset = question_formset(question_list=None, data=request.POST)

У меня остался пустой набор форм, в котором нет данных, введенных пользователями.Буду признателен за любые указания на то, что я делаю неправильно и как я могу это исправить.

Спасибо!

Редактировать: Не использовать ModelForm, потому что у меня есть специальное поле answers на моем QuestionForm.ModelForm наложил на меня ограничения, которых я хочу избежать.Например, я работаю с подклассами Question, такими как BoolQuestion, и т. Д., И у меня были проблемы с настройкой этого для работы с ModelForm.

...