当我从下拉列表中选择了一个与父表中的条件相匹配的值时,如何显示Django模板消息?

fnvucqvd  于 2023-01-21  发布在  Go
关注(0)|答案(1)|浏览(81)

我有一个表单,其组成字段是各个父模型的外键,如下所示:

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)

Сhild型号:

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.");
          }
        }
    });
});

如果有人能指引我正确的方向,或者有人能指出我的失败之处,我将不胜感激。

xu3bshqb

xu3bshqb1#

首先,您的浏览量过滤错误,您没有过滤您正在查看的注册号,我认为它一定是:

** 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.");
          }
        }
    });
});

浏览次数.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如果是,那么现在检查您从视图传递到 AJAX 的数据是否也是正确的。

相关问题