2010-11-24 53 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 2010-11-24 19:34:12