Django:使用FK访问模板中的数据

时间:2011-08-17 15:54:31

标签: django-templates

我有我的模特:

class Volume(models.Model):
    volnumber = models.IntegerField('Volume Number', primary_key=True) 
    year = models.TextField()
    #...#

class Article(models.Model):
    volnumber = models.ForeignKey(Volume)
    title = models.TextField(blank=True)
    slug = models.SlugField(max_length=100, db_index=True)
    #...#

我的观点:

# Article detail
def article_detail(request, slug):
return render_to_response('article_detail.html', {
    'article': get_object_or_404(Article, slug=slug),
})

我的模板:

{{ article.volume.year }}. <strong class="title">{{ article.title }}</strong>.Journal Vol.{{ article.volnumber }}

问题是我今年没有得到任何输出(标题和数量都很好)。语法似乎正确。我做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试:

{{ article.volnumber.year }}

由于您只是following the relationship forwardarticle.volnumber应该为您提供对相关Volume对象的引用。

您的模板中没有显示任何内容,因为article没有volume属性。模板引擎无声地失败,没有任何打印。


更好的是,为了使参考更直观,您可能需要考虑将Article模型中的属性从volnumber重命名为volume

class Article(models.Model):
    volume = models.ForeignKey(Volume)
    # ...

在我看来,使用article.volume.yeararticle.volume.volnumberarticle.volnumber.volnumber更具可读性。