选择django中的后向关联

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择django中的后向关联相关的知识,希望对你有一定的参考价值。

我正在写一个Django项目。

courses/models.py

class Category(models.Model):
    title = models.CharField(max_length=50)

class Language(models.Model):
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    title = models.CharField(max_length=50)

class Course(models.Model):
    name = models.CharField(max_length=250)
    language = models.ForeignKey(Language, on_delete=models.CASCADE)

我想得到所有Category的列表,然后遍历指定类别的每个Language

class Courses(ListView):
    template_name = 'courses/index.html'
    model = Course
    context_object_name = 'courses'

    def get_context_data(self, **kwargs):
        context = super(Courses, self).get_context_data(**kwargs)
        categories = Category.objects.all()
        context['categories'] = categories
        return context

在模板courses/index.html我想显示基于类别的语言列表

{% for category in categories %}
    {{ category.title }}
    <li>lis of languages in this category</li>
{% endfor %}

如何循环反向关联数据?

答案

Django创建了一个可以通过modelname_set键在模板中访问的关系。

在你的情况下,你必须迭代:category.language_set.all

{% for category in categories %}
    {{ category.title }}
    {% for language in category.language_set.all %}
        <li>{{ language.title }}</li>
    {% endfor %}
{% endfor %}
另一答案

_set这样做。例如。在您的情况下,此代码必须工作:

{%for language in category.language_set.all%}

  • {{language.title}}
  • {% endfor %}

    以上是关于选择django中的后向关联的主要内容,如果未能解决你的问题,请参考以下文章

    在 GPU 上选择性地注册一组操作的后向传递

    正则表达式中的后向引用

    如何以编程方式“捕获”对 UIWebView 的后向和转发请求?

    c_cpp 04 - 变量d的后向存储器

    python里使用正则表达式的后向搜索肯定模式

    python里使用正则表达式的后向搜索肯定模式