如何将数据从Django发送到具有替代json格式的动态jstree

时间:2018-08-21 05:43:37

标签: django django-models jstree

我尝试了以下过程,但查询集已完全更改其格式。

$('#jstree').jstree({
        'core' : {
             'data' :{{data}}  # here main issue
               },
        plugins : ["wholerow","unique","dnd","sort","state","contextmenu","contextmenubtn","themes"]
    }).on("ready.jstree", function (e, data) { data.instance.open_all(); });

我作为回应发送的查询集:

data = Buildkb4.objects.values("id","text","parent")
return render(request,"registration/basetest.html", 
     {"data": data})

输出:

没有表结构,也没有数据,在页面源代码上,我得到了以下查询输出:

 data= <QuerySet [{'text': 'PKM', 'parent': 0, 'id': 1}, {'text': 'develop', 'parent': 1, 'id': 2}, {'text': 'social', 'parent': 1, 'id': 3}]>

1 个答案:

答案 0 :(得分:0)

我对jstree和django有一些基本的经验,这种解决方案可能会对您有所帮助

在这里,您直接将查询集传递给模板中的数据,这是不可接受的。它接受json数据类型。

设计一个视图,该视图将返回您在jstree中所需的json数据。

from django.http import JsonResponse
def table(request):
   data = table.objects.values("column1","column2")
   data_list = list(data)
   return JsonResponse(data_list,safe=False) 

现在在您的模板中添加:

var arraycollection =(function() {
    var json = null;
    $.ajax({
        'async': false,
        'global': false,
        'url': "####### url to acces data"
        'dataType': "json",
        'success': function (data) {
            json = data;
        }
    });
    return json;
})();

现在为jstree中的数据分配arraycollection