我正在尝试用数据制作一个dicts的字典并将其传递给模板。
models.py
class Lesson(models.Model):
...
class Files(models.Model):
...
class Section(models.Model):
file = models.ManyToManyField(Files)
lesson = models.ForeignKey(Lesson)
views.py
def LessonView(request):
the_data={}
all_lessons= Lesson.objects.all()
for lesson in all_lessons:
the_data[lesson]=lesson.section_set.all()
for section in the_data[lesson]:
the_data[lesson][section]=section.file.all() <---error
Context={
'the_data':the_data,
}
return render(request, 'TMS/lessons.html', Context)
我收到错误:
Exception Value:
'QuerySet' object does not support item assignment
我是django和编程的新手,所以请放轻松。这是传递数据的正确方法,这样我就可以在模板中显示每节课的每个部分的文件列表?
答案 0 :(得分:2)
您无需转换为dicts的dict即可传递给模板。您可以直接遍历查询集,对于每个查询集,您可以获取相关的部分和文件:
{% for lesson in all_lessons %}
{{ lesson.name }}
{% for section in lesson.section_set.all %}
{{ section.name }}
{% for file in section.file.all %}
{{ file.name }}
{% endfor %}
{% endfor %}
{% endfor %}
请注意,这(就像您原来的方法一样)在数据库查询方面非常昂贵:您应该在视图中使用prefetch_related
进行调查,以减少这些问题。