У меня есть класс Person, у которого может быть несколько домов, каждый с одним или несколькими телефонными номерами.
Я определил классы, но теперь я пытаюсь создать представление, в котором перечислены все люди, все его дома и все номера телефонов для каждого домашнего адреса ... что-то вроде:
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 %}
любая идея о том, как написать, что мне не хватает? конечно, если есть другой способ (более элегантный или эффективный) делать то, что мне нужно, я хотел бы его услышать.






У вас есть три вложенных коллекции: 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 %}
Результаты должны быть такими же, как у вашей функции просмотра.