如何使用 django 的替代 json 格式将数据发送到动态 jstree

How to send data to dynamic jstree with alternative json format from django

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

$('#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})

输出:

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

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

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

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

设计一个将 return json 数据的视图,您需要在 jstree 中。

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

现在将 arraycollection 分配给 jstree 中的数据