2012-09-27 45 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