多对多的关系。在模板中显示数据

时间:2012-09-27 11:36:53

标签: django django-models

我学习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 个答案:

答案 0 :(得分: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,因为它是一个盒子中的特定玩具,而不是一套。