ajax - 单击 Django 中的按钮后更改布尔值
问题描述
我需要一些有关按钮单击和布尔值更改的帮助。
我的模型:
class Topic(models.Model):
subject = models.CharField(max_length=255)
category = models.CharField(max_length=255)
last_updated = models.DateTimeField(auto_now_add=True)
starter = models.ForeignKey(User, on_delete=models.CASCADE, related_name='topics')
slug = models.SlugField(unique=True)
isReported = models.BooleanField(default=False)
startPrice = models.IntegerField(validators=[RegexValidator(r'^\d{1,10}$')])
单击按钮后,我想将字段“isReported”的状态从默认值“False”更改为“True”:
<button type="submit" class="btn btn-primary btn-block">Report</button>
我已经用谷歌搜索并在 SO 上找到了类似的东西(如何在 HTML 中单击按钮时更改 django 中的值?),但我对这个线程中提出的概念缺乏了解。不幸的是,这是我能找到的唯一有用的信息。
单击按钮后如何更改数据库中的布尔值?不必在此按钮上更改回值。
我 somehome 试图调整链接的代码:
视图.py:
def ajax_change_status(request):
isReported = request.GET.get('isReported', False)
pk = request.GET.get('pk', False)
# first you get your Job model
job = Topic.objects.get(pk=pk)
try:
job.isReported = isReported
job.save()
return JsonResponse({"success": True})
except Exception as e:
return JsonResponse({"success": False})
return JsonResponse(data)
xxx.html:
<form method="post" novalidate>
{% csrf_token %}
<button type="submit" class="btn btn-danger btn-sm" id="change" role="button">Report</button>
</form>
<script>
$("#change").on('click', function () {
var pk = '{{ topic.pk }}'
var isReported = 'True'
$.ajax({
url: '/ajax/change_status/',
data: {
'isReported': isReported
'pk': pk
},
dataType: 'json',
success: function (data) {
if (data.success) {
alert("ajax call success.");
// here you update the HTML to change the active to innactive
}else{
alert("ajax call not success.");
}
}
});
});
我试图理解这个概念,但是(obv.)它不起作用。
POST /request/xxx-xxx-xxx-5622149-3/ HTTP/1.0" 200 5472
解决方案
推荐阅读
- google-cloud-platform - 在 Google Dataproc 中批量创建配置单元表
- javascript - Vuejs如何为选择选项赋值
- javascript - 在while循环中迭代时从数组中删除元素
- javascript - JavaScript try 块中的对象字面量
- sql - 当日期在 SQL 中另一个数据集中的日期范围内时合并
- android - 如何指向特定的 RecyclerView onClick 视图(Android Java)?
- c# - 通过参数从进程中获取退出代码
- javascript - 如何重建数组中的对象数组
- java - OptaPlanner 8.0.0 final (Windows 10) 中的课程时间表和会议安排示例被破坏
- django - 如果用户是管理员 django rest,则将字段添加到序列化程序