>我有以下关系:
class BaseModule(models.Model):
task_type = models.CharField(max_length=200)
topic = models.CharField(max_length=200)
# packages contain many modules
class ModulePackage(models.Model):
name = models.CharField(max_length=200)
individual_modules = models.ManyToManyField(BaseModule, blank=True)
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
individual_modules = models.ManyToManyField(BaseModule, blank=True)
module_packages = models.ManyToManyField(ModulePackage, blank=True)
当学生登录并转到他们的个人资料页面时,我可以打印学生包的列表,但无法弄清楚如何打印每个包中包含的基本模块列表。
我知道我需要查看这些数据。我需要遍历学生包并获得每个包的基本模块。然后将此数据传递给我的模板。
我花了很长时间在谷歌上搜索并浏览SO,但找不到任何内容。
谢谢。
您应该能够通过模板中的嵌套 for 循环来实现这一点。
如果将Student
模型的实例作为student
传递给模板:
<!-- loop through the student module packages -->
{% for package in student.module_packages.all %}
<div>Package: {{ package.name }}</div>
<ul>
<!-- loop through each individual module in the package -->
{% for module in package.individual_modules.all %}
<li>Task type: {{ module.task_type }}, Topic: {{ module.topic }}</li>
{% endfor %}
</ul>
{% endfor %}