django使用给定的parent_id

时间:2017-01-09 19:02:09

标签: django

我必须根据另一个选择字段的选择填充选择字段。第一个选择是学校,第二个选择应该是该学校的课程。我使用ajax调用,在我看来,我有以下代码,但没有结果:

def get_classes_by_school_id(request):
    school_id = request.POST.get('school_id', None)

    data = {
    'listClasses': Classes.objects.filter(school=school_id).values('id', 'title', 'abbr')
    }

    return JsonResponse({'data': list(data)})

的console.log($ parseJSON(数据)。);返回

{data: ["listClasses"]}
    data:["listClasses"]
        0:"listClasses"

3 个答案:

答案 0 :(得分:2)

您的data变量是dict,但您稍后又list(data)了。 list(data)基本上将dict转换为列表,只接受密钥。在您的data数据结构中,唯一的关键是listClasses,这就是您最终得到[listClasses]的原因。

一个例子:

>>> list({1:2, 3:4})
[1, 3]

您可能需要:

return JsonResponse({'data': list(data['listClasses'])})

答案 1 :(得分:1)

>>> x = list({"key1" : value1 , "key2" : value2 })
    ["key1" , "key2"]

试试这个

def get_classes_by_school_id(request):
        school_id = request.POST.get('school_id', None)

        data = {
        'data': Classes.objects.filter(school=school_id).values('id', 'title', 'abbr')
        }

    return JsonResponse(data)

并在 javascript

var = JSON.parse(response)
var list = response["data"]

答案 2 :(得分:1)

这是我最终解决它的方式:

def get_classes_by_school_id(request):
    school_id = request.POST.get('school_id', None)

    school = get_object_or_404(School, pk=school_id)
    queryset = Classes.objects.filter(school=school).values('id', 'abbr')
    data = [{'id': item['id'], 'abbr': item['abbr']} for item in queryset]

    return HttpResponse(json.dumps(data), content_type='application/json')

并在我的javascript中:

var options = '';
$.each(data, function (key, element) {
    options += '<option value="' + element.id + '">' + element.abbr + '</option>';
});

我无法让你的回复有效,但无论如何...... ...