views:

49

answers:

3

if a have a question - answer system, where the answer form is included in the template of questions,(just like facebook post-comments) is there another way to save the comments for every question? how can i take the id of the question?

my code:

{%include "replies/replies.html"%} #thats in the template where questions are listed

the save_question view

def save_reply(request, id):
   question = New.objects.get(pk = id)
   if request.method == 'POST':
        form = ReplyForm(request.POST)
        if form.is_valid():
           new_obj = form.save(commit=False)
           new_obj.creator = request.user 
           u = New.objects.get(pk=id)
           new_obj.reply_to = u   
           new_obj.save()
           return HttpResponseRedirect('/accounts/private_profile/')    
   else:
           form = ReplyForm()     
   return render_to_response('replies/replies.html', {
           'form': form,
           'question':question, 
           }, 
          context_instance=RequestContext(request))  

and the form:

<form action="." method="post">
<label for="reply"> Comment </label>
<input type="text" name="post" value="">
<p><input type="submit" value="Comment" /></p>
</form>

how can i make this form to work 'embedded' in the questions template, and how can i make it to 'know' the id of the question it reffers to?

Thx

A: 

I suggest you read about comments at http://docs.djangoproject.com/en/1.2/ref/contrib/comments/#ref-contrib-comments-index, specially read the code in django/contrib/comments the tags 'render_comment_list' and 'render_comment_form', maybe you can use the comments framework like answers, making a "hack" read this part: http://docs.djangoproject.com/en/1.2/ref/contrib/comments/custom/.

diegueus9
A: 

Another way is in the conf or your urls.py:

(r'^reply/(?P<id>\d+)/$',save_reply),

and in your form:

<form action="/reply/{{ question.id }}/" method="post">
diegueus9
one second, i'll check this and come back with details
dana
i think you must change your render_to_response for the template question.html
diegueus9
A: 

in your replies.html have:

<form action="." method="post">
    <input type="hidden" value="{{ in_reply_to_id }}" />
    <label for="reply"> Comment </label>
    <input type="text" name="post" value="">
    <input type="submit" value="Comment" />
</form>

then in your question template:

<div class="question" id="question-{{ question.id }}">
    {{ question.text }}
    {% with question.id as in_reply_to_id %}
        {%include "replies/replies.html" %}  <--- in_reply_to_id is sent to the include
    {% endwith %}
</div>

in this way, your main templates can call

<p> questions here! <p>
<div class="question-list">
{% for question in question_list %}
    {% include "questions\question.html" %}
{% endfor %}
</div>

Include a little bit of ContentTypes magic, and you can have your replies class reply to any kind of object, not just questions!

Thomas
can i ask what is wrong with this answer that somebody downvoted it?
Thomas