Форма сохраняет сразу несколько экземпляров
Я создаю простой сайт ответов на вопросы и пытаюсь построить систему комментариев в ответах на вопросы. Но когда я добавляю комментарий, он сохраняется несколько раз,
Например :- Есть 5 ответов и если я комментирую один, то сохраняются те же пять экземпляров, а если вопрос имеет 3 ответа, то сохраняются 3 таких же комментария.
models.py
Class Question(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
body = models.TextField()
class Answer(models.Model):
answered_by = models.ForeignKey(User, on_delete=models.CASCADE)
question_of = models.ForeignKey(Question, on_delete=models.CASCADE)
body = models.TextField()
class Comment(models.Model):
commented_by = models.ForeignKey(User, on_delete=models.CASCADE)
commented_on = models.ForeignKey(Answer, on_delete=models.CASCADE)
text = models.TextField()
views.py
def save_comment(request, answer_id):
if request.method == 'POST':
comment = request.POST['comment']
answer = Answer.objects.get(pk=answer_id)
commented_by = request.user
if comment != "":
Comment.objects.create(commented_on=answer,
text=comment,
commented_by=commented_by)
return JsonResponse({'bool':True})
else:
return JsonResponse({'bool':False})
template.html
{% for answer in answers %}
<div class="card my-3">
<h6 class="card-header">Add Comment</h6>
<div class="card-body">
<textarea class="form-control comment-answer-text-{{answer.id}}"></textarea>
<div class="contain"></div>
<button type="button" data-data="{{answer.id}}" class="btn btn-dark my-3 save-answer-comment">Submit</button>
</div>
</div>
<script>
$(document).ready(function(){
$(".save-answer-comment").on('click',function(){
var _answerid=$(this).data('data');
var commented=$(".comment-answer-text-"+_answerid).val();
var by = $(".uncommen-text-"+_questionid).val();
// Ajax
$.ajax({
url:"{% url 'save_comment' answer.id %}",
type:"post",
data:{
comment:commented,
answerid:_answerid,
by : by,
csrfmiddlewaretoken:"{{csrf_token}}"
},
dataType:'json',
});
});
});
</script>
{% endfor %}
Я пробовал много раз, но он все еще не работает. Любая помощь будет очень признательна. Спасибо