代码之家  ›  专栏  ›  技术社区  ›  user257111

Django-在模板中提供附加信息

  •  2
  • user257111  · 技术社区  · 16 年前

    我正在建立一个应用程序来学习Django,并已开始与联系系统,目前存储联系人和地址。C是与a的多对多关系,而不是使用Django models.ManyToManyField() 我已经创建了自己的链接表,提供了关于链接的附加信息,比如联系人的地址类型(家庭、工作等)。我要做的是将这些信息传递给一个视图,因此在我对联系人的完整视图中,我可以这样做:

    def contact_view_full(request, contact_id):
        c = get_object_or_404(Contact, id=contact_id)
    
        a = []
        links = ContactAddressLink.objects.filter(ContactID=c.id)    
        for link in links:
            b = Address.objects.get(id=link.AddressID_id)
            a.append(b)
    
        return render_to_response('contact_full.html', {'contact_item': c, 'addresses' : a }, context_instance=RequestContext(request))
    

    所以我可以做相当于 c.Addresses.all() link 'addresses' : a 信息,因此当我的模板执行此操作时:

    {% for address in addresses %}
    <!-- ... -->
    {% endfor %}
    

    那么实现这一目标的最佳方法是什么呢?我在想两个对象的联合可能是个主意,但我对Django没有足够的经验,不知道这是否被认为是最好的方法。建议?

    提前谢谢。

    纳法

    1 回复  |  直到 16 年前
        1
  •  3
  •   Pierre-Jean Coudert    16 年前

    为了添加额外的信息,您应该使用带有“槽”额外字段的多对多关系: http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

    def contact_view_full(request, contact_id):
        c = get_object_or_404(Contact, id=contact_id)
        a = c.addresses.all()
        return render_to_response('contact_full.html', {'contact_item': c, 'addresses' : a }, context_instance=RequestContext(request))
    
    推荐文章