Как создать форму Django с переменным количеством полей - PullRequest
0 голосов
/ 29 сентября 2018

Я новичок в 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 и т. Д.?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...