Добрый день.
Есть древовидная модель подразделений и связанных с ними контактов:
class Subdivision(MPTTModel):
subdivision = models.CharField(verbose_name="subdivision", max_length=255)
parent = TreeForeignKey("self", null=True, blank=True, related_name="children")
class Contact(models.Model):
full_name = models.CharField(verbose_name="full name", max_length=255, unique=True)
subdivision = models.ForeignKey(Subdivision)
Формируем вывод:
def view_list_contacts(request):
subdivisions = Subdivision.objects.all()
contacts = Contact.objects.order_by('id')
return render(request, URL_RENDER['view_list_contacts'], locals())
Для того чтобы вывести в шаблоне принадлежащие текущей ноде контакты, мне приходится шерстить их все по кругу:
<ul>
{% recursetree subdivisions %}
<li>
{{ node.subdivision }}
{% for contact in contacts %}
{% if contact.subdivision.id == node.id %}
{{ contact.full_name }}
{% endif %}
{% endfor %}
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
Выглядит кривовато. Есть менее костыльное решение?