选择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%}
以上是关于选择django中的后向关联的主要内容,如果未能解决你的问题,请参考以下文章