Как создать модельную форму и сохранить объект в Django?

models.py:

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
            return self.question_text

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

class UserChoice(models.Model):
    user_choice = models.ForeignKey(Choice, on_delete=models.CASCADE)

    def __str__(self):
        return self.user_choice

views.py:

def index(request):
    question_list = Question.objects.all()
    context = {'question_list': question_list}
    return render(request, 'polls/index.html', context)

index.html.py:

<form method="post"">
    {% csrf_token %}
  
    {% for question in question_list %}
        <h3>{{question.question_text}}</h3> 
    
        <select hidden="" name="form-{{ forloop.counter0 }}-question" id="id_form-{{ forloop.counter0 }}-question">
            <option value="{{question.id}}" selected="">{{question.question_text}}</option>
        </select>
  
        {% for answer in question.choice_set.all %}
            <label for="id_form-{{ forloop.counter0 }}-answer">
                <input type="radio" name="form-{{ forloop.parentloop.counter0 }}-answer" id="id_form-{{ forloop.counter0 }}-answer" value="{{answer.id}}">
                {{answer.choice_text}}
            </label> <br>
        {% endfor %}
  
  
    {% endfor %}
  
    <br />
    <br />
    <input type="submit" value="Submit">
</form>

Вопрос: Как сохранить выбор пользователя с помощью модели UserChoice для каждого вопроса? Как создать такую модель? Является ли моя модель UserChoice хорошей для хранения этой информации?

P.s. Я знаю, как создать простую ModelForm, но здесь мои небольшие знания о Django остановили меня :). Пока что я понятия не имею, как создать эту форму, я читал о modelformset_factory, но не понял.

Вернуться на верх