2017-01-09 17 views
0

別の選択フィールドの選択に基づいて選択フィールドに値を設定する必要があります。最初の選択は学校であり、2番目の選択はその学校のクラスでなければなりません。私は、AJAX呼び出しを使用して、私の見解では、私は、コードが、結果なしに次き:django与えられたparent_idを持つすべての子を取得する

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" 

答えて

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
>>> 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) 

そしてJにしてみてくださいここ

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

私はfinalyそれを解決する方法avascript:

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>'; 
}); 

私はとにかくあなたの応答が働いて得るが、THXことができませんでした。.. 。

関連する問題