Подтвердить что ты не робот

Django: показать шаблон ManyToManyField в шаблоне?

У меня есть эти модели в моем проекте Django:

class Area(models.Model):
    name = models.CharField(max_length=100, primary_key=True)
    def __unicode__(self):
        return self.name
class Place(models.Model):
    id = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=100, primary_key=True)
    area = models.ManyToManyField(Area,related_name='area')

Как я могу показать имя (-и) места в моем шаблоне? В настоящее время у меня есть:

{% for place in places %}
    Name: {{ place.name }}, Area: {{ place.area}}
{% endfor %}

который дает:

Area: <django.db.models.fields.related.ManyRelatedManager object at 0x10435a3d0>

И {{ place.area}} просто пуст. Может ли кто-нибудь помочь?

4b9b3361

Ответ 3

Как выглядит ваш код вида? Здесь один из способов вернуть связанные модели:

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 %}