How To Properly Use Get_context_data With ListView To Fetch Related Instances In Django
I am trying to use ListView and ContextMixin to create a view but I'm not sure if this is a right way to do it. The goal is to get all the fields in CourseImplementation and the te
Solution 1:
You can access the related TeacherCourseImplementation
items for a TeacherCourseImplementation
item implement
with implement.teachercourseimplementation_set.all()
(don't use parentheses in the template):
{% for implement in all_implements %}
<div class="col-sm-5 col-lg-5">
<div class="thumbnail">
<p>{{ implement.courseid }}</p>
{% for teacher_course_implementation in implement. teachercourseimplementation_set.all %}
{{ teacher_course_implementation.teacherid }}
...
{% endfor %}
</div>
</div>
{% endfor %}
See the docs on following relationships backwards for more info.
This will generate an extra query for every item in the queryset. You can avoid this by using prefetch_related
.
def get_queryset(self):
return CourseImplementation.objects.all().prefetch_related('teachercourseimplementation_set')
Since you are accessing all the TeacherCourseImplementation
instances via the CourseImplementation
instances, you don't need to override get_context_data
.
Post a Comment for "How To Properly Use Get_context_data With ListView To Fetch Related Instances In Django"