如何以Django形式显示警告错误消息?

时间:2019-05-09 07:06:50

标签: ajax django django-forms

我实际上已经按照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

你知道我的代码有什么问题吗?

谢谢

2 个答案:

答案 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)