Необходимо сохранить все ответы пользователя на все вопросы, связанные с определенным тестом

Я хочу сохранить после отправки все ответы пользователя на все вопросы, связанные с конкретной викториной. Логика такова: У меня есть Викторина, Вопросы. Вопросы связаны с викториной, и когда я выбираю викторину, все вопросы, на которые ссылаются вопросы, отображаются на веб-странице с помощью javascript (дизайн). После отправки мне нужно получить все галочки и сохранить в UserResponse.

Модели

class Question(models.Model):
    objects = None
    question = models.CharField(max_length=200, null=True)
    description = models.CharField(max_length=255, null=True)
    question_pic = models.ImageField(upload_to='poll/', storage=fs, null=True)
    choices = models.ManyToManyField(Answer, related_name='QuestionsChoices')
    mandatory = models.BooleanField(default=True)
    multiple = models.BooleanField(default=False)
    randomize = models.BooleanField(default=False)

class Quiz(models.Model):
    STATUS_CHOICES = (
        (1, 'Draft'),
        (2, 'Public'),
        (3, 'Close'),
    )
    nom = models.CharField(max_length=200, null=False)
    theme = models.ForeignKey(Theme, null=False, on_delete=models.CASCADE)
    questions = models.ManyToManyField(Question, related_name='Quizs')
    status = models.IntegerField(choices=STATUS_CHOICES, default=1)
    published = models.DateTimeField(null=True)
    date_added = models.DateTimeField(auto_now_add=True)
    date_modified = models.DateTimeField(auto_now_add=True)

class QuizInstance(models.Model):
    objects = None
    """
    A combination of user response and a quiz template.
    """
    player = models.ForeignKey(User, on_delete=models.CASCADE)
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE)
    start_quiz = models.DateTimeField(auto_now_add=True)
    score = models.IntegerField(default=0)
    complete = models.BooleanField(default=False)


class UserResponse(models.Model):
    objects = None
    """
    User response to a single question.
    """
    quiz_instance = models.ForeignKey(QuizInstance, on_delete=models.CASCADE)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    response = models.ManyToManyField(Answer, related_name="UserResponses")
    time_taken = models.DateTimeField(auto_now_add=True)
    time_taken_delta = models.DateTimeField(blank=True)

VIEWS (чтобы показать все вопросы выбранного теста)

def show_quiz(request, quiz_id):
    try:
        quiz = Quiz.objects.get(pk=quiz_id)
    except:
        messages.error(request, "Ce quiz n'existe pas ;)")
        return redirect('poll:show-list')
    context = {
        'quiz': quiz,
    }
    return render(request, "poll/show_quiz.html", context)

# IF QUIZ SUBMITED, HERE I NEED TO SAVE ALL ANSWER GAVE BY USER INTO UserResponse
def answer_quiz(request):
    context = {}

    if request.method == 'POST':
        quiz = Quiz.objects.get(pk=request.POST.get('id_quiz'))
        player = request.user
        quiz_player = QuizInstance.objects.filter(player=player, quiz=quiz)
        if len(quiz_player) == 0:
            quiz_instance = QuizInstance.objects.create(player=player, quiz=quiz)
        else:
            context = {
                'error': True,
            }
    return render(request, "poll/answer_quiz.html", context)

ШАБЛОНЫ (HTML) [...]

Я знаю, что мой метод не очень чистый ... Я использую форму для создания вопроса, викторины и т.д. ... но для показа вопроса я не могу, потому что нужно показать определенный вид флажка, если изображение, и другие, если нет ... В любом случае, здесь мне нужно просто получить из POST отправки все данные из викторины, отправленные пользователем, и сохранить их :)

Спасибо за помощь

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