I have my models:
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)
#...#
my view:
# Article detail
def article_detail(request, slug):
return render_to_response('article_detail.html', {
'article': get_object_or_404(Article, slug=slug),
})
my template:
{{ article.volume.year }}. <strong class="title">{{ article.title }}</strong>.Journal Vol.{{ article.volnumber }}
The problem is I am not getting any output for the year (title and volnumber are fine). The syntax seems correct..what am I doing wrong?
Try:
Since you’re simply following the relationship forward,
article.volnumbershould give you a reference to the associated Volume object.You’re not seeing anything in your template because
articledoes not have avolumeattribute. The templating engine fails silently and nothing is printed.Better yet, to make the references more intuitive you might want to consider renaming the attribute in your
Articlemodel fromvolnumberto simplyvolume.Using
article.volume.yearandarticle.volume.volnumberis, in my opinion, a lot more readable thanarticle.volnumber.volnumber.