1. Тебе надо чтобы твоя модель с комментариями имела ключ сама на себя
parent = models.ForeignKey("self")
2. Тебе надо во вью сформировать к примеру вот такой список с данными
ПС: это делается с помощью рекурсивной функции, гугли (как рекурсивно сформировать дерево, примерно)
ПС2: в список возможно также стоит включить parent_id и все что необходимо
comments = [{
'id': 1,
'text': 'asdaasd',
'childrens': []
},
{ 'id': 2,
'text': 'asdaasd',
'childrens': [
{ 'id': 7,
'text': 'asdaasd',
'childrens': [
{ 'id': 12,
'text': 'asdaasd',
'childrens': [
{ 'id': 23,
'text': 'asdaasd',
'childrens': [],
},
... # и т.д.
],
},
... # и т.д.
],
},
{ 'id': 8,
'text': 'asdaasd',
'childrens': [],
},
... # и т.д.
],
},
{ 'id': 2,
'text': 'asdaasd',
'childrens': [
{ 'id': 15,
'text': 'asdaasd',
'childrens': [],
},
{ 'id': 19,
'text': 'asdaasd',
'childrens': [],
},
... # и т.д.
],
}
... # и т.д.
]
3. После этого выкинуть его в шаблон, и в шаблоне можно будет сделать так:
ПС: там где список childrens пустой значит нет комментариев-ответов
{%for comment in comments%}
{{ comment.id }}
{{ comment.text }}
{% if comment.childrens %}
# По идее здесь тоже надо будет организовать рекурсию, для отображения множественной вложенности
# гугли - django template recursive tree, примерно
# К вложенным комментариям вот так можно обращаться будет
{% for children in comment.childrens %}
{{ children.id }}
{{ children.text }}
{% if children.childrens %}
# и т.д.
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
Вот примерно так все это должно работать если использовать ссылку на себя
ПС: а вообще для работы с деревом грамотно использовать nested sets что и делается в django-mptt, но это уже совсем другая история :)
Удачного велосипедирования!