打印一份拥有多个家庭的人员列表,每个家庭拥有多个电话号码

Posted

技术标签:

【中文标题】打印一份拥有多个家庭的人员列表,每个家庭拥有多个电话号码【英文标题】:printing a list of persons with more than one home, each home with more than one phone number 【发布时间】:2010-09-28 03:06:02 【问题描述】:

我有一个 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 %

知道如何写我失踪的 for 吗?当然,如果有另一种方式(更好更优雅或更有效的方式)来做我需要的事情,我很乐意听到。

【问题讨论】:

【参考方案1】:

您似乎拥有三个嵌套集合: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 % 

结果应该和你的视图函数一样。

【讨论】:

以上是关于打印一份拥有多个家庭的人员列表,每个家庭拥有多个电话号码的主要内容,如果未能解决你的问题,请参考以下文章

求家庭教师里所有人物的资料?

OTT大屏时代:酷开网络要靠新模式占领家庭营销主场?

家庭局域网的组建(2台或2台以上)

spss课后习题

在 RavenDB 中将相关文档表示为一个对象

2019年11月10日统计学王菲