Django forme de réponse inclus dans modèle de question
Question
si ont une question - système de réponse, où le formulaire de réponse est incluse dans le modèle de questions, (comme post-commentaires facebook) est-il une autre façon d'enregistrer les commentaires pour toutes les questions? Comment puis-je prendre l'identifiant de la 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 « intégré » dans le modèle de questions, et comment puis-je faire à « connaître » l'id de la question, il reffers à?
Thx
La solution
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, pas seulement des questions!
Autres conseils
Je vous suggère de lire sur les commentaires à http://docs.djangoproject.com/en/1.2/ref/contrib/comments/#ref-contrib-comments-index , lisez spécialement le code dans django / contrib / commentaires de la render_comment_list 'les balises et « render_comment_form », peut-être vous pouvez utiliser le cadre des commentaires tels que les réponses, ce qui rend une lecture « hack » cette partie: http://docs.djangoproject.com/en/1.2/ref/contrib/comments/custom/ .
Une autre façon est dans le ou votre urls.py conf:
(r'^reply/(?P<id>\d+)/$',save_reply),
et dans votre formulaire:
<form action="/reply/{{ question.id }}/" method="post">