首页 > 解决方案 > 如何使用模板显示两个表中的字段(使用 FK)

问题描述

在我的模板中,我想显示按“类别”分组的“挑战”,例如

第一类

第 2 类

这是我的models.py:

class Category(models.Model):
  title = models.CharField(max_length=100)
  description = models.CharField(max_length=400)

class Challenge(models.Model):
  category = models.ForeignKey(Category, on_delete=models.CASCADE)
  question_text = models.CharField(max_length=200)
  answer_text = models.CharField(max_length=200)

在我的模板文件中,我想做这样的事情:

{% for category in category_list %}
    {{ category.title }}
    <ul>
        {% for challenge in Challenge.objects.get(category_id=category.id) %}
        <li>{{ challenge.question_text }}</li>
        {% endfor %}
    </ul>
{% endfor %}

但我知道你不能在模板中调用函数。我还能如何在关系中显示来自两组的数据?

标签: djangodjango-modelsdjango-viewsdjango-templates

解决方案


假设您的 category_list 是一个 QuerySet,您可以通过多对一关系获取相关的挑战值

{% for category in category_list %}
    {{ category.title }}
    <ul>
        {% for challenge in category.challenge_set.all %}
        <li>{{ challenge.question_text }}</li>
        {% endfor %}
    </ul>
{% endfor %}

推荐阅读