我有一个 Person 类,它可以有多个 Homes,每个 Homes 有一个或多个电话号码。
我已经定义了类,但现在我正在尝试创建一个 View ,其中列出每个人,以及每个人的所有家庭和每个家庭地址的所有电话号码......类似于:
john smith
123 fake str
305-99-8877
305-99-8876
321 oak road
444-98-7654
peter guy
453 north ave...
到目前为止我有这样的东西:
(在我的 views.py 上)
def ViewAll(request):
people = Person.objects.all()
render_to_response('viewall.html', {'people': people})
(在我的模板上)
{% for guy in people %}
{{ guy.name }}
{% if person.home_address_set.all %}
{{ home_address }}
{% for ?????? in ???? %}
#print phone numbers in each home
{% endfor %}
{% endif %}
{% endfor %}
知道如何编写 for I missing 吗?当然,如果有另一种方式(更好、更优雅或更有效的方式)来完成我需要的事情,我很乐意听到。
请您参考如下方法:
您有似乎是三个嵌套的集合:Person、Home、Phone Number。
第 1 步 - 您将如何在 View 函数中编写它?
for p in Person.objects.all():
print "person", p
for h in p.home_address_set.all():
print " home", h
for ph in h.phone_set.all():
print " phone", ph
不要省略这一步。如果你不能让它在 View 函数中工作,那么你的模型是错误的。花点时间把这部分做好。
第 2 步 - 将其转换为模板语法。
{% for p on people %}
{% for h in p.home_address_set.all %}
{% fpr ph in h.phone_set.all %}
{% endfor %}
{% endfor %}
{% endfor %}
结果应该与您的 View 函数相同。
