我学习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 %}
如何在模板中显示玩具的价格?
答案 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
,因为它是一个盒子中的特定玩具,而不是一套。