【问题标题】:How to send data to dynamic jstree with alternative json format from django如何使用来自 django 的替代 json 格式将数据发送到动态 jstree
【发布时间】:2018-08-21 05:43:37
【问题描述】:

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

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

【问题讨论】:

    标签: django django-models jstree


    【解决方案1】:

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

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

    设计一个将返回 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中的数据

    【讨论】:

    • 它成功了,如果可能,请对 ajax 部分进行更多解释
    猜你喜欢
    • 2011-03-04
    • 1970-01-01
    • 2018-06-04
    • 2017-11-16
    • 1970-01-01
    • 2016-10-17
    • 2012-07-14
    • 2014-10-05
    • 2012-03-19
    相关资源
    最近更新 更多