как получить id связного обьекта в django
Пишу сайт для обучения с тестами и лекциями, зашёл в тупик когда пытался получить id объекта Question
для передачи в url.
связь выглядит следующим образом
lesson ← lection ← question ← choice
хочу в шаблоне lesson.html получить question.id из lection, попробовал {%for q in lec.question_set.all%}
но ничего не выводит
в чём ошибка ? есть ли решение проблемы ?
model.py
class Lesson(models.Model):
title = models.CharField(max_length=200)
subjects = models.CharField(max_length=23)
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
def __str__(self):
return self.title
def get_absolute_url(self):
return (self.pk)
class Lection(models.Model):
title = models.CharField(max_length=200)
lecter = models.FileField(upload_to='lecters/%y/%m/%d/',max_length=200)
les = models.ForeignKey(Lesson,on_delete=models.DO_NOTHING)
question = models.ForeignKey('Question', on_delete=models.DO_NOTHING, null=True ,blank=True)
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published', auto_created=True)
def get_absolute_url(self):
return self.pk
@admin.display(
boolean=True,
ordering='pub_date',
description='Published recently ?',
)
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
bal = models.IntegerField()
def __str__(self):
return self.choice_text
views.py
def ViewLesson(request,lesson_id):
lesson = Lesson.objects.filter(pk=lesson_id)
return render(request,'polls/lesson.html',{'lesson':lesson)
lesson.html
{%extends 'base.html'%}
{%load static%}
{%block content%}
{%if lesson %}
<p>{{lesson.subjects}}</p>
{%for l in lesson%}
<ul>
<li>{{ l.title }}</li>
<li>{{l.subjects}}</li>
</ul>
{%for lec in l.lection_set.all%}
<ul>
<li>{{lec.title}}</li>
{%if lec.question%}
{%for q in lec.question_set.all%}
<li><a href="">{{q.question_text}}</a></li>
{%endfor%}
{%endif%}
</ul>
{%endfor%}
{%endfor%}
{%else%}
<h1>isn't working</h1>
{%endif%}
{%endblock%}
Источник: Stack Overflow на русском