模板中的Django反向查询
我有这样的模型模板中的Django反向查询,django,reverse,Django,Reverse,我有这样的模型 class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __unicode__(self): return self.name class Entry(models.Model): blog = models.ForeignKey(Blog) headline = models.C
class Blog(models.Model):
name = models.CharField(max_length=100)
tagline = models.TextField()
def __unicode__(self):
return self.name
class Entry(models.Model):
blog = models.ForeignKey(Blog)
headline = models.CharField(max_length=255)
我想在一个页面中列出所有博客。我写了这样一个观点:
def listAllBlogs(request):
blogs= Blog.objects.all()
return object_list(
request,
blogs,
template_object_name = "blog",
allow_empty = True,
)
我可以显示博客的标语,这样就可以
{% extends "base.html" %}
{% block title %}{% endblock %}
{% block extrahead %}
{% endblock %}
{% block content %}
{% for blog in blog_list %}
{{ blog.tagline }}
{% endfor %}
{% endblock %}
但是我想展示一下,这样的东西blog\uuuu entry\uuuu name
,但我不知道如何在模板中实现这一点。
此外,博客中可能没有条目。如何在模板中检测
谢谢根据您的代码,您可以执行以下操作
{% block content %}
{% for blog in blog_list %}
{{ blog.tagline }}
{% for entry in blog.entry_set.all %}
{{entry.name}}
{% endfor %}
{% endfor %}
{% endblock %}
要访问博客条目():blog.entry\u set.all
若要在博客没有条目时执行其他操作,则需要在集合为空时执行标记
{% block content %}
{% for blog in blog_list %}
{{ blog.tagline }}
{% for entry in blog.entry_set.all %}
{{entry.name}}
{% empty %}
<!-- no entries -->
{% endfor %}
{% endfor %}
{% endblock %}
{%block content%}
{blog_list%}中的blog为%
{{blog.tagline}
{blog.entry_set.all%}
{{entry.name}
{%empty%}
{%endfor%}
{%endfor%}
{%endblock%}
这不应该是blog.entry\u set而不是blog\u entry\u set吗?下面的两个答案都是正确的,只有两条注释。为blog
字段定义related\u name='entries'
,您将能够编写blog.entries
。并使用select_related()
,而不是进行N+1 SQL查询。@brsbilgic对于OneToOneField
您只需使用:blog.entry
(而不是blog.entry\u set
)。这很有效。非常感谢。但是,如果关系是一对一blog=models.OneToOneField(blog,unique=True),该怎么办呢。在`{blog.entry\uuuu headline}这样的模板中,正确的方法是什么`