2010-07-06 6 views
1

si un système de questions-réponses, où le formulaire de réponse est inclus dans le modèle de questions, (juste comme facebook post-commentaires) est-il un autre moyen d'enregistrer les commentaires pour chaque question ? comment puis-je prendre l'identifiant de la question?formulaire de réponse Django inclus dans le modèle de question

mon code:

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

la vue save_question

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)) 

et la forme:

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

comment puis-je faire de cette forme de travail 'embarqué' dans le modèle de question , et comment puis-je faire pour «connaître» l'identifiant de la question à laquelle il se réfère?

Thx

+0

si les lignes u = New.objects.get (pk = id) = u new_obj.reply_to vous hiting la base de données inutilement, pourquoi ne pas simplement utiliser la variable 'question'? – diegueus9

Répondre

0

dans vos replies.html ont:

<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> 

puis dans votre modèle de question:

<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> 

de cette façon, vos principaux modèles peuvent appeler

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

Inclure un peu de magie ContentTypes, et vous pouvez avoir votre réponse des réponses de classe à tout type d'objet, non seulement des questions!

+0

puis-je demander quel est le problème avec cette réponse que quelqu'un downvoted il? – Thomas

0

Une autre façon est dans le ou votre urls.py conf:

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

et votre formulaire:

<form action="/reply/{{ question.id }}/" method="post"> 
+0

une seconde, je vais vérifier cela et revenir avec des détails – dana

+0

je pense que vous devez changer votre render_to_response pour le modèle question.html – diegueus9

Questions connexes