Помогите разобраться. Делаю древовидные комментарии. Не могу понять, как сделать ответ на существующий комментарий. Вижу решение так, чтобы передать значение родителя в ответную форму, но никак не пойму как это сделать...
models.py
class Comment(MPTTModel):
text = models.TextField()
date = models.DateTimeField(
auto_now_add=True
)
user = models.ForeignKey(
CustomUser,
verbose_name='Пользователь'
)
parent = TreeForeignKey(
'self',
null=True,
blank=True,
related_name='children',
db_index=True
)
class Meta:
db_table = 'comments'
verbose_name = 'Комментарий'
verbose_name_plural = 'Комментарии'
class MPTTMeta:
order_insertion_by = ['user']
def __str__(self):
return self.text[:60].rstrip()
forms.py
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['text']
widgets = {'text': forms.Textarea(attrs={'placeholder': 'Оставить комментарий'})}
def save(self, user):
obj = super(CommentForm, self).save(commit=False)
obj.user = user
return obj.save()
views.py
def main(request):
if request.method == "POST":
if 'comment_btn' in request.POST:
form = CommentForm(request.POST)
if form.is_valid:
form.save(request.user)
return redirect('comments:main')
elif 'answer_btn' in request.POST:
form = CommentForm(request.POST)
if form.is_valid:
form.save(request.user)
return redirect('comments:main')
else:
form = CommentForm()
return render_to_response('comments/main.html',
{
'user': request.user,
'comment': Comment.objects.all(),
'form': form,
},
RequestContext(request))
main.html
<ul class="root">
{% recursetree comment %}
<li>
<i style="color: red">{{ node.user }}</i> {{ node.date }} <br>
{{ node.text }}
{% include 'comments/answer_form.html' %}<hr>
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
{% include 'comments/comment_form.html' %}
comment_form и answer_form отличаются только строкой <input name="comment_btn"> и <input name="answer_btn">
<form action="" method="post">
{% csrf_token %}
{% for field in form.hidden_fields %}
{{ field }}
{% endfor %}
{% for field in form.visible_fields %}
{% if field.errors|length > 0 %}
{% for error in field.errors %}
<strong>{{ error }}</strong>
{% endfor %}
{% endif %}
{% if field.help_text %}
{{ field.help_text }}
{% endif %}
{{ field }}
{% endfor %}
<input type="submit" value="Отправить" name="comment_btn">
</form>