Как заставить отображаться сообщение шаблона Django при выборе значения из выпадающего списка, которое соответствует условию в родительской таблице?

У меня есть форма, составляющие поля которой являются внешними ключами к соответствующим родительским моделям, как показано ниже:

class vehicle(models.Model):



    STATUS = [

        (OPERATIONAL, ('Operational')),

        (GROUNDED, ('Grounded')),

        (NA, ('Not Applicable')),

        

    ]


reg no = models.CharField(max_length=100, null=True)


operationalstatus = models.CharField (max_length=100, choices=STATUS, null=True)




##### child model##

class managecar(models.Model):

reg_no = models.ForeignKey(vehicle, on_delete=models.CASCADE, null = True) location = models.CharField(max_length=100, null=True)

####forms.py####

class manageForm(forms.ModelForm):



    class Meta:

        model = managecar

        fields = '__all__'

Я создал представление, как показано ниже, и связал с ним url, который будет вызываться ajax на фронтенде, чтобы вызвать сообщение, если автомобиль, выбранный в форме, "заземлен", но он возвращает 404 в консоли, в то время как я ожидаю, что он вернет сообщение о том, что автомобиль заземлен, если я выберу автомобиль, который указан заземленным в родительской модели.

views.py

def validate_operation_status(request):

    grounded = request.GET.get('grounded', None)

    data = {

        'is_grounded': vehicle.objects.filter(operational_status__iexact='grounded').exists()

    }

    return JsonResponse(data)

ajax-метод

  $("#id_registration_no").change(function () {

    console.log( $(this).val() );



    $.ajax({

        url: 'ajax/validate-status/',

        data: {

          'grounded': id_registration_no

        },

        dataType: 'json',

        success: function (data) {

          if (data.is_grounded) {

            alert("This vehicle is grounded.");

          }

        }

      });



    });    

Буду благодарен, если меня направят в нужное русло или укажут, где я не справляюсь.

Заранее благодарю

Во-первых, ваша фильтрация просмотров была неправильной, вы не отфильтровали, какой регистрационный номер вы ищете, я думаю, что это должно быть :

Код AJAX : (я изменил имя вашей переменной)

$("#id_registration_no").change(function () {
    console.log( $(this).val() );
    $.ajax({
        url: 'ajax/validate-status/',
        data: {
          'registration_no': id_registration_no
        },
        dataType: 'json',
        success: function (data) {
          if (data.operational_status== 'Grounded') {
            alert("This vehicle is grounded.");
          }
        }
    });
});

views.py :

def validate_operation_status(request):
context={}
registration_no = request.GET.get('registration_no', None)

try:
    chck_tbl = vehicle.objects.get(reg_no=registration_no)
    context.update({'operational_status':chck_tbl.operationalstatus})
except:
    context.update({'operational_status':''})

return JsonResponse(data=context)

Если это не работает, пожалуйста, попробуйте проверить, правильно ли вы передаете/вы можете передать значение в ваш views.py, если да, то проверьте теперь, были ли данные, которые вы передаете из views в ajax, также правильными.

Вернуться на верх