Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-从两个下拉菜单中选择选项,并在第三个下拉菜单中显示过滤结果_Django_Ajax_Django Models_Django Views_Django Templates - Fatal编程技术网

Django-从两个下拉菜单中选择选项,并在第三个下拉菜单中显示过滤结果

Django-从两个下拉菜单中选择选项,并在第三个下拉菜单中显示过滤结果,django,ajax,django-models,django-views,django-templates,Django,Ajax,Django Models,Django Views,Django Templates,我有两个下拉选项,国家和号码服务地点。两个选项都可以从各自的下拉列表中选择。 我的目标是根据所选国家/地区和号码服务位置显示正确的电话号码。您还将在下面的视图中看到我尝试使用Ajax实现此功能 在此创建的模型- class DID_Number_Assignment_Model(models.Model): #DID Number Assignment country = models.ForeignKey(Country_Model, on_delete=models.CA

我有两个下拉选项,国家和号码服务地点。两个选项都可以从各自的下拉列表中选择。 我的目标是根据所选国家/地区和号码服务位置显示正确的电话号码。您还将在下面的视图中看到我尝试使用Ajax实现此功能

在此创建的模型-

class DID_Number_Assignment_Model(models.Model):       #DID Number Assignment
    country = models.ForeignKey(Country_Model, on_delete=models.CASCADE)
    number_service_location = models.ForeignKey(Number_Service_Location_Model, on_delete=models.CASCADE)
    did_selector = models.ForeignKey(DID_Definition_Model, on_delete=models.CASCADE)
Views.py

def did_assignment_form(request, id=0, *args, **kwargs):
 if request.method =="POST":
        if id==0:
            form = DID_Number_Assignment_Model_Form(request.POST)
            if request.is_ajax():
                country = request.GET.get('country')
                number_service_location = request.GET.get('number_service_location')
                filters = {'country': country, 'number_service_location': number_service_location}
                dids_searched = DID_Definition_Model.objects.filter(**filters)
                data = []
                for dids in dids_searched:
                    data.append({
                        'country': dids.country,
                        'number_service_location': dids.number_service_location})
                    return HttpResponse({
                        'success': True,
                        'data': data,
                        }, content_type=content_type)
            else:
                return HttpResponse({
                    'success': False,
                    'message': 'Only AJAX method is allowed.'
                    }, content_type=content_type)
模板html文件在这里-

<form action="" method="post" autocomplete="off">
    {%csrf_token%}
    <!--{{form|crispy}} !-->


    <div class="row", style = "position:relative; left:57px; top:100px">
        <div class="col-md-7"> {{ form.country | as_crispy_field }}  </div>
        <div class="col-md-7"> {{ form.number_service_location | as_crispy_field }}  </div>
        <script type="text/javascript">
        $(document).on('change', '.filter-dropdown', function() {
    var country = $('#countryDropdown').children('option:selected').val();
    var number_service_location = $('#number_service_locationDropdown').children('option:selected').val();

    if (country !== "" && number_service_location !== "" ) {
        var data = {
            'country': country,
            'number_service_location': number_service_location
        }

        $.ajax({
            url: '/did_definition_list/',
            type: 'GET',
            data: data,
            dataType: 'json',
            success: function(response) {
                if (response.success) {
                    // render did_number from `response.data`
                } else {
                    // show message from `response.message`
                }
            },
            error: function(errorResponse) {
                // show error message
            }
        });
    } else {
        return;
    }
});
</script>
class DID_Number_Assignment_Model_Form(forms.ModelForm):

    class Meta:
        model = DID_Number_Assignment_Model
        fields = ('country','number_service_location','did_selector', 'usage_assignment', 'employee_fullname', 'employee_email',  'subscriber_department' )

    def __init__(self, *args, **kwargs):


        super(DID_Number_Assignment_Model_Form,self).__init__(*args, **kwargs)
        defs_with_no_assignments = DID_Definition_Model.objects.filter(did_number_assignment_model__isnull=True)
        available_did= defs_with_no_assignments.values_list('did_number', flat=True)

        # TO SET drop down default text for a field , optional -
        self.fields['did_selector'].empty_label = "Select"
        self.fields['did_selector'].queryset = DID_Definition_Model.objects.filter(did_number__in=available_did)