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

如何在模板中显示玩具的价格?

4

1 回答 1

1

只需使用正常的点符号即可。toys是 Toy 模型的一个实例,因此您可以访问它的属性:

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

请注意,我已经更改了您的变量名称,这令人困惑:box您传递给模板的变量实际上应该是boxes,因为它是该所有者拥有的所有框的集合,而toys在模板内部应该是toy,因为它是一个特定的盒子里的玩具,而不是套装。

于 2012-09-27T11:41:42.817 回答