【问题标题】:Django - provide additional information in templateDjango - 在模板中提供附加信息
【发布时间】:2011-01-30 13:25:31
【问题描述】:

我正在构建一个应用程序来学习 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() 的操作,或者ManyToManyField 可以工作。我有兴趣知道的是如何使用'addresses' : a 信息传递有关link 对象中链接的信息,以便当我的模板执行此操作时:

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

并将正确的链接对象数据与地址正确关联。

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

提前致谢。

Nf

【问题讨论】:

    标签: python django django-templates django-views


    【解决方案1】:

    为了添加额外信息,您应该使用带有“低谷”额外字段的多对多关系: 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))
    

    【讨论】:

    • 这看起来正是我所需要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 2012-11-22
    • 2011-04-06
    • 2011-02-18
    相关资源
    最近更新 更多