2012-09-27 84 views
0

我學習Django ORM。多對多的關係。在模板中顯示數據

class Toy(models.Model): 
    name = models.CharField(max_length=20) 
    desc = models.TextField() 
    price = models.DecimalField(max_digits=5, decimal_places=2) 

class Box(models.Model): 
    name = models.CharField(max_length=20) 
    proprietor = models.ForeignKey(User, related_name='User_Box') 
    toys = models.ManyToManyField(Toy, blank=True) 

我嘗試觀點是這樣的:

def show_box(request): 
    user = request.user 
    box = Box.objects.filter(proprietor = user) 

    return render_to_response('box.html', {'box': box}) 

模板:

{% for b in box %} 
    Toy: {% for toys in b.toys.all %}{{ toys }}<br/>{% endfor %} 
    Price: 
{% endfor %} 

如何顯示玩具的價格模板?

回答

1

只是正常的點符號。 toys是玩具模型的實例,這樣你就可以訪問它的屬性:

{% for box in boxes %} 
    {% for toy in box.toys.all %} 
     Toy: {{ toy.name }}<br/> 
     Price: {{ toy.price }}<br/> 
    {% endfor %} 
{% endfor %} 

請注意,我已經改變了你的變量名,這是令人困惑:您傳遞給模板的box變量確實應該boxes,因爲它是所有者擁有的所有箱子的集合,而模板內的toys應該是toy,因爲它是箱子中的一個特定玩具,而不是一套。

+0

謝謝。很有幫助 – k44