我有两个模型定义如下:
class Article(models.Model):
url = models.URLField(max_length=200, unique=True, null=False)
title = models.CharField(max_length=200, unique=False, null=False)
class List(models.Model):
article = models.ForeignKey(Article, related_name='joining')
list = models.IntegerField(default=0, null=False, unique=False)
查询文章
class InboxView(SomeMixin, generic.ListView):
template_name = '...'
context_object_name = 'article_list'
def get_queryset(self):
return Article.objects.all().prefetch_related('joining')
在我的模板上,这有效:
{% for article in article_list %} {{ article.title }} {% endfor %}
但这不是
{% for article in article_list %} {{ article.list }} {% endfor %}
答案 0 :(得分:1)
您不能以这种方式访问child.field。如果您的父孩子被正确引用,您必须这样做:
{% for parent in parent_list %}
my parent value: {{parent.field1}}
{%for child in parent.child_set.all %}
My child value {{child.field2}}
{%endfor%}
{%endfor%}
由于
答案 1 :(得分:1)
你需要这样做:
{% for article in article_list %}
{{ article.title }}
{% for t in article.joining.all %}
{{ t.list }}
{% endfor %}
{% endfor %}
由于您正在浏览the "other" side of the relationship(即文章),您将通过文章的list_set(you have given the related name'加入')访问每篇文章的相关List
。
顺便说一句,您可能希望为List
模型找到其他名称。这使得这个讨论有些混乱。