循环遍历数据表中的嵌套JSON对象

时间:2015-04-30 01:51:05

标签: javascript python django jquery-datatables

我正在寻找在javascript中迭代JSON对象。现在它将每个“项目”加载到一个单元格中,而不是在一行中每列放置1个项目。例如,我想得到:

Period         Name          Amount
1/1/2014    Accounting       $500.00

我得到的是:

       Period                             Name                Amount
1/1/2014, Accounting, $500       1/1/2014, Finance, $750    ...,...,...

生成JSON对象的视图是:

def BudgetJson(request):
    from django.http import JsonResponse
    resultset = models.Expense.objects.filter(category_id=1)
    d = {'data' : [[[model.expensePeriod, model.expenseName, 
           model.expenseAmount] for model in resultset]]}
    return JsonResponse(d)

我正在使用datatables库来呈现表,并使用AJAX接收JSON对象(通过URL):

<script type="text/javascript" class="init">

    $(document).ready(function() {
        $('#expenses').DataTable( {
            "ajax": '{% url "property:budget:budget_json" %}'
        });
    });
</script>

我知道我的视图输出了一个键/项,这就是为什么我得到了这个结果 - 我想知道的是,让JavaScript循环通过JSON对象是否更好,这是可能的使用datatables UI库?或者我应该更改视图输出的JSON对象的结构吗?

1 个答案:

答案 0 :(得分:2)

你可以这样做,
生成JSON对象:

def BudgetJson(request):
    from django.http import JsonResponse
    out_list = []
    resultset = models.Expense.objects.filter(category_id=1)
    for model in resultset:
        temp_dict = {'expense_period': model.expensePeriod, 'expense_name':model.expenseName, 'expense_amount':model.expenseAmount }
        out_list.append(temp_dict)
    data = {'data' : out_list }
    return HttpResponse(json.dumps(data), content_type='application/json')

<script>标记内,datatable将为

$('#expenses').DataTable( {
                    "ajax" : "your-url",
                    "columns" : [
                    {"data" : "expense_period"},
                    {"data" : "expense_name"},
                    {"data" : "expense_amount"},
                    ]
                });

这会奏效。 :)