我实际上已经按照this教程对表单字段中的错误执行了ajax请求。
然后我执行以下操作:
我的模特:
class Company(models.Model):
user = models.ForeignKey(User,related_name="Company_Owner",on_delete=models.CASCADE,null=True,blank=True)
name = models.CharField(max_length=50,blank=False)
books_begining_from = models.DateField(default=datetime.date(2018,4,1), blank=False)
gst_enabled = models.BooleanField(default=False)
composite_enable = models.BooleanField(default=False)
我的观点:
def validate_gst_billing(request):
data = {
'is_enable' : Company.objects.filter(gst_enabled = False,composite_enable = True)
}
if data['is_enable']:
data['error_message'] = 'To enable composite billing GST should be enabled'
return JsonResponse(data)
在我的html中:
<script>
$("#id_composite_enable").change(function () {
var form = $(this).closest("form");
$.ajax({
url: form.attr("data-validate-gst-billing-url"),
data: form.serialize(),
dataType: 'json',
success: function (data) {
if (data.is_enable) {
alert(data.error_message);
}
}
});
});
</script>
如果用户尝试error message
字段的submit
字段设置为gst_enable
并且{{1 }}字段设置为False
。
你知道我的代码有什么问题吗?
谢谢
答案 0 :(得分:0)
我认为您应该像这样在ajax中使用错误方法:
$.ajax({
url: '/api/list',
success: function(data , textStatus ,jqXHR){
console.log(data)
},
error: function(jqXHR, textStatus, errorThrown){
console.log(textStatus)
console.log(errorThrown)
}
});
您可以在页面上右键单击选择检查元素,然后在控制台标签中查看控制台日志
答案 1 :(得分:0)
对于我所看到的,您没有在'is_enable'上设置任何布尔值。将.exists()方法添加到查询集以获取布尔值。
def validate_gst_billing(request):
data = {
'is_enable' : Company.objects.filter(gst_enabled=False, composite_enable=True).exists()
}
if data['is_enable']:
data['error_message'] = 'To enable composite billing GST should be enabled'
return JsonResponse(data)