Получение данных через внешний ключ
Я только начинающий изучать фреймворк django.
Я пытаюсь разработать учебный портал, где каждая тема будет иметь свой собственный тест. Мои модели следующие:
class Quiz(models.Model):
title = models.CharField(max_length=255)
book_name = models.CharField(max_length=255)
slug = models.SlugField(blank = True)
topic = models.CharField(max_length=255)
number_of_questions = models.IntegerField()
class Meta:
verbose_name_plural = 'Quizes'
def __str__(self):
return self.title
Модель моего вопроса выглядит следующим образом:
class Quest(models.Model):
quiz = models.ForeignKey(Quiz, on_delete= models.CASCADE)
question_text = models.CharField(max_length=500)
option_1 = models.CharField(max_length=250)
option_2 = models.CharField(max_length=250)
corr_ans = models.CharField(max_length=250)
def __str__(self):
return self.question_text
class Meta:
verbose_name_plural = 'Questions'
Мое мнение таково:
def questions(request, url):
questions = Quiz.quest_set.filter(slug = url)
return render(request, 'quiz/questions.html', {'questions': questions})
Каждый тест имеет несколько заданий (вопросов). Я хочу вызывать вопросы, используя slug викторины.
Django показывает мне ошибку "'ReverseManyToOneDescriptor' object has no attribute 'filter'".
Я много пробовал и искал, однако, так и не смог понять, как отбрасывать вопросы, используя slug викторины, т.е. обратный поиск.
Я также обратился к следующей ссылке stackoverflow [https://stackoverflow.com/questions/15306897/django-reverse-lookup-of-foreign-keys][1]
Каким образом лучше всего получить вопросы, относящиеся к определенному тесту, и просмотреть их на странице, поскольку в каждой книге будет несколько тестов, и избежать вышеупомянутой ошибки.
Спасибо за ваше время и поддержку.
Приветствуем Саид
Вы должны выполнить следующий запрос:
questions = Quiz.objects.get(slug=url).quest_set.all()
Что вы делаете выше:
- Получение викторины на основе заданного slug:
Quiz.objects.get(slug=url)
- Получите все связанные вопросы:
.quest_set.all()