AJAX只更新一个django模型实例



我有一个django项目,它显示了一个";发行";对象,并且每个问题对象都有一个称为"问题"的布尔字段;固定";。我希望用户能够按下一个按钮;固定的";使用ajax,但按钮只更改其中一个问题对象,而不是任何"问题"对象;发行";这个按钮属于,这是我的gif问题

这是我的html:

{% for issue in projects.issues.all %}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{ issue.author.profile.image.url }}">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2">{{ issue.author }}</a>
<small class="text-muted">{{ issue.date_posted|date:"F d, Y" }}</small>
</div>
<h2><a class="article-title" href="{% url 'issue-detail' issue.id %}">{{ issue.title }}</a></h2>
<p class="article-content">{{ issue.description }}</p>
<p>{{ issue.severity }}</p>
{% if projects.author == user %}

<span id="fixed_bool">{{ issue.fixed }}</span>

{% csrf_token %}
<button class = "btn btn-primary btn-sm" id="fix-button" value = "{{ issue.id }}">Fix</button>
{% endif %}
</div>
</article>
{% endfor %}

Javascript:

$(document).on('click', '#fix-button', function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '{% url "fix_issue" %}',
data: {
issueid: $('#fix-button').val(),
csrfmiddlewaretoken: $('input[name=csrfmiddlewaretoken]').val(),
action: 'post'
},
success: function (json) {
document.getElementById("fixed_bool").innerHTML = json['result']
console.log(json)
},
error: function (xhr, errmsg, err) {
}
});
})

我的url

path('fix/', views.FixView, name='fix_issue'),

和我的看法

def FixView(request):
if request.POST.get('action') == 'post':
result = ''
id = int(request.POST.get('issueid'))
issue = get_object_or_404(Issue, id=id)
if issue.fixed == False:
issue.fixed = True
result = str(issue.fixed)
issue.save()
else:
issue.fixed = False
result = str(issue.fixed)
issue.save()
return JsonResponse({'result': result, })

非常感谢您的帮助。非常感谢。

HTML中的id属性必须是唯一的。

但每个按钮都有相同的id:id="fix-button"

因此,在JS代码中,这个——$('#fix-button').val()——总是返回第一个按钮的值。

要解决此问题,请为每个按钮创建唯一的ID,或者使用类:

<button class="fix-button">...</button>

在JS代码中,按类名选择按钮:

$(document).on('click', '.fix-button', function (e) {
...
issueid: $(this).val(),
}

最新更新