2

我有一个 Person 类,它可以有多个 Home,每个 Home 都有一个或多个电话号码。

我已经定义了类,但是现在我正在尝试创建一个视图,其中列出了每个人,包括所有家庭和每个家庭地址的所有电话号码......类似于:

john smith
123 fake str
  305-99-8877
  305-99-8876
321 oak road
  444-98-7654

peter guy
453 north ave...

到目前为止,我有这样的事情:

(根据我的意见.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 %}

任何想法如何写我失踪的?当然,如果有另一种方式(更好更优雅或更有效的方式)来做我需要的事情,我很想听听。

4

1 回答 1

8

您似乎拥有三个嵌套集合:Person、Home、Phone Number。

第 1 步 - 你将如何在视图函数中编写它?

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

不要省略这一步。如果你不能让它在视图函数中工作,那么你的模型是错误的。花点时间把这部分做好。

第 2 步 - 将其转换为模板语法。

{% for p on people %}
    {% for h in p.home_address_set.all %}
        {% fpr ph in h.phone_set.all %}
        {% endfor %}
    {% endfor %}
{% endfor %} 

结果应该与您的视图功能相同。

于 2008-12-23T02:25:53.753 回答