我有一个可以有很多对话的联系人类。但每个对话都可以属于一个联系人。所以它是一对多的关系。
class Contact(models.Model):
first_name = models.CharField()
last_name = models.CharField()
class Conversation(models.Model):
contact = models.ForeignKey(Contact)
notes = models.TextField()
def __unicode__(self):
return self.notes
现在,当我将联系人传递给模板时,我希望有一个字段显示联系人的最后一次对话。
contacts= profile.company.contact_set.all()[:10]
calls = []
for c in contacts:
calls.append(max(c.conversation_set.all()))
我像这样传递它们:
vars = {'contacts' : contacts, 'calls': calls}
variables = RequestContext(request, vars)
return render_to_response('main_page.html', variables)
在模板中,我想出了这个魔法:
{% for idx, val in contacts %}
<tr>
<td>...
</td>
<td>
{% if calls %}
{{ calls.idx }}
{% endif %}</td>
</tr>
{% endfor %}
这不会显示任何呼叫。但是,如果我用 calls.0 替换了 calls.idx,我会显示第一个。
我究竟做错了什么?除此之外,它可能比这更容易完成。:) 我愿意接受更好的方法。