从由中间模型连接的模型中获取数据



>我有以下关系:

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 %}

最新更新