2010-11-24 7 views
21

私はDjangoプロジェクトでこれらのモデルを持っている:Django:テンプレートにManyToManyFieldを表示しますか?

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}}がちょうど空白になっています。誰も助けることができますか?

答えて

2

あなたのビューコードはどのように見えますか?
は、ここでは、関連するモデルを返すことができる一つの方法です:この例は、単なる例示のためのものである

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

感謝です!私の問題は、多くのプレイスがある別のページがあることです。そのため、それぞれのビューで個別に領域を個別に計算することはできません(質問は更新されました)。このために何をすべきかについてのアイデアは何ですか? – AP257

関連する問題