在Template - Django中显示相关对象的数据

时间:2013-04-06 16:23:39

标签: python django django-templates foreign-keys

在模板中,我想显示与“source-object”相关的所有对象的数据。

这是我想在文章详情页面上显示的事件模型:

### Models ###
class EventRecord(models.Model):
    article = models.ForeignKey(Article, related_name='events')
    event_date = models.DateField('Event Date')
    country = models.CharField(blank=True, max_length=100)
    location = models.CharField(blank=True, max_length=100)
    actors = models.CharField(blank=True, max_length=100)
    .
    .
    .
    def __unicode__(self):
        return self.event_date

这是我为它写的视图(这有效):

### View ###
def article_detail(request, pk):
    """ Detail View for articles"""
    article = get_object_or_404(Article, pk=pk)
    events = article.events.all()

    return render(request, 'coding/article-detail.html', {'article': article,
    'events': events})
    pass

此模板也有效,但我看到的只是event_date信息。

### Template ### 
<div>
<h2>Events</h2>
{% for event in events %}
    {{ event }}
{% endfor %}

</div>

这是因为__unicode__(self)吗? 如何查看所有活动信息,我该怎么办?

非常感谢!

1 个答案:

答案 0 :(得分:1)

你是对的,当渲染{{event}}时,你只是看到它的表示,你在方法__unicode__中定义为event_date字段。如果你想看到EventRecord的其他字段,就像这样渲染它们:

{% for event in events %}
    {{ event.country }}
    {{ event.location }}
    .
    .
    .
{% endfor %}