django Template中取多对多关系

2019/8/22 posted in  python
{% for place in places %}
    Name: {{ place.name }}<br/>
    Area: <br/>{% for area in places.area.all %}{{ area }}<br/>{% endfor %}
{% endfor %}

在Template中可以取到多对多关系,使用不带括号的搜索就可以拿到。

也可以使用

{% for place in places %}
    Name: {{ place.name }}, Area: {{ place.area.all|join:", " }}
{% endfor %}

查询模式2

将查询到的内容批量存入context中

from myapp.models import Area, Place

def detail(request, place_id):
    place = Place.objects.get(pk=place_id)
    areas = place.area.all()

    return render_to_response('detail.html', {
        "place": place,
        "areas": areas,
    })
<h3>{{ place }}</h3>

{% if areas %}
  <ul>
  {% for area in areas %}
    <li>{{ area.name }}</li>
  {% endfor %}
  </ul>
{% endif %}