Как поместить предупреждение об ошибке в форме Django? - PullRequest
0 голосов
/ 09 мая 2019

Я действительно следовал этому учебнику, чтобы выполнить 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, установленным на False, и полем composite_enable, установленным на True.

Есть идеи, что не так в моем коде?

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Насколько я вижу, вы не устанавливаете логическое значение 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)
0 голосов
/ 09 мая 2019

Я думаю, вы должны использовать метод ошибки в AJAX, как это:

$.ajax({
    url: '/api/list',
    success: function(data , textStatus ,jqXHR){
        console.log(data)
    },
    error: function(jqXHR, textStatus, errorThrown){
        console.log(textStatus)
        console.log(errorThrown)
    }
});

Вы можете щелкнуть правой кнопкой мыши на странице, выбрать элемент проверки и на вкладке консоли посмотреть журнал консоли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...