Выполнить ПРИСОЕДИНЕНИЕ в django извлечения связанной даты в обратной взаимосвязи. Есть три модели.
Ниже приведен код для моделей
class Question(models.Model):
title = models.CharField(max_length=255 )
description = models.TextField(max_length=300)
class Quiz(models.Model):
name = models.CharField(max_length=225,blank=False )
quiz_type =models.IntegerField(choices=QUIZ_TYPE,default=0)
questions = models.ManyToManyField( Question, through='QuestionQuiz', related_name="quiz_question")
categories= models.ManyToManyField(Category,through='CategoryQuiz',related_name='quiz_category')
class QuestionQuiz(models.Model):
quiz = models.ForeignKey(Quiz,on_delete=models.CASCADE)
question = models.ForeignKey(Question,on_delete=models.CASCADE)
correct =models.DecimalField(max_digits=4, decimal_places=3)
incorrect= models.DecimalField(max_digits=4, decimal_places=3)
class Meta:
unique_together = ('quiz','question')
В этом вопросе добавляются вопросы в викторину с использованием модели Вопрос Вопрос.
Здесь QuizQuestion имеет отношение внешнего ключа с вопросом. Мне нужно получить все из вопроса JOIN и записи из QuestionQuiz с определенным quiz_id.
Предположим, quiz_id = 3 Затем я получу все вопросы с правильными и неправильными. если этот идентификатор теста добавлен к вопросу, тогда он будет отображаться неправильно, иначе они будут пустыми.
question_id | title|description|correct|incorrect|quesquizid<br>
1 | Q1 |Q1desc |2 | -2 | 1
2 | Q2 |Q2desc | | |
Ques_id = 1 добавлен в quiz_id = 3 .ques_id = 2 не добавлен to quiz_id = 3. Так, правильные неверные пустые.
Я пытался выполнить следующее, но он получает все вопросы и связанные с ними вопросы викторины, независимо от их появления в текущей викторине:
Question.objects.prefetch_related('questionquiz_set').all()
Результат должен быть похож на следующий запрос
Select * from question as qs LEFT JOIN questionquiz as qq on (qq.question_id = qs.id AND qq.id=3)
Пожалуйста, проверьте результат запроса: