Я новичок в Django и пытаюсь построить форму.Это приложение для опросов, где есть много вопросов.
Модели: У меня есть 2 модели Questions
и Responses
.Ответы имеют 2 поля.
- questionid
, который является внешним ключом для идентификатора модели вопроса
- response
поле, которое является целым числом от 1 до 5.
Желаемая форма В требуемой форме перечислены все вопросы в модели вопросов, а затем переключатели для цифр 1-3 ниже.На странице шаблона может быть 20 вопросов, каждый с 3 переключателями.Эти данные будут представлены в модель ответа.В конце может быть больше переключателей, показанных 3 для простоты.Каждый вопрос будет отвечать по одной и той же шкале 1-3.
Что меня смущает, так это то, что мне нужно получить questions.id
из модели questions
, но каким-то образом передать его в response
modelForm или форму,Пользователь не должен иметь возможность указать question.id.
Я не уверен, что лучший способ создать форму для этого.
Попытка 1
template.py
<form action="/submit" method="post">
{% csrf_token %}
{% for question in questions %}
<h2>id: {{ question.id }} - {{ question.question_title }}</h2>
<fieldset id="{{ question.id }}">
<label>1</label>
<input type="radio" value="1" name="{{ question.id }}">
<label>2</label>
<input type="radio" value="2" name="{{ question.id }}">
<label>3</label>
<input type="radio" value="3" name="{{ question.id }}">
</fieldset>
{% endfor %}
<br />
<input type="submit" />
</form>
Затем, на мой взгляд, сохраните его в модель.Но для такого новичка, как я, я не знаю, как показывать ошибки формы и т. Д.
Попытка 2: Я попытался с помощью этого метода построить ModelForm для «ответа»настройка:
<form action="/submit" method="post">
{% csrf_token %}
{% for question in questions %}
<h2>id: {{ question.id }} - {{ question.question_title }}</h2>
{{ responseFrom.form }}
{% endfor %}
<br />
<input type="submit" />
</form>
Все переключатели конфликтуют.Например, при выборе радио 1 для вопроса 1 также будет выбрано радио 1 для любого другого вопроса.Я также не мог понять, как указать внешний ключ question.id для модели ответа.
Как можно создать форму с динамическим числом полей ввода, которые ссылаются на идентификатор из другой модели?
Можете ли вы сделать это в form.py
, который будет поддерживать ошибки и теги CSRF и т. Д.?