从Django数据库

时间:2015-11-21 04:16:58

标签: python json django python-2.7 sqlite

我想利用一个功能,可以从数据库(sqlite3)获取数据并下载为.json文件。数据库中存在的数据是电子邮件,其中包含类似于,来自等的字段。我在提取时遇到问题,然后将其写入.json。我得到的数据是一个在写入.json "<UserData: UserData object> is not JSON serializable"时给出错误的对象。下面我给出了一些代码片段,请帮忙..

如果可以采用这种格式获取数据,那么工作就完成!! :)但我不知道如何实现?:(

[{'body': {'markdown': u'http://127.0.0.1:8000/admin/gextracto/userdata/', 'html': u'http://127.0.0.1:8000/admin/gextracto/userdata/\r<br/>'}, u'To': u'infowikitech@gmail.com', u'From': u'Gextracto <infowikkitech@gmail.com>', 'id': u'151202ad347314bc', u'Subject': u'Your Download Ready!'}]

但它采用这种格式 -

[<UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>, <UserData: UserData object>]

这是我检索数据的地方 -

def get(self,request, format=None):
        label_id = request.GET['label']
        all_mails=UserData.objects.filter(label=label_id)
        return Response(all_mails)

这是我写的地方是.json -

function bulk_download_json(label_id){

    $.ajax({
        type:"GET",
        url:"/initiate_download/?label="+label_id,
        success:function(data){
            bulk_mails=data;

            bulk_download_filename = label_id.concat(".json");

            var bulk_json_file = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(bulk_mails));
            $('<a id="bulk_json_link" href="data:' + bulk_json_file + '" download="'+bulk_download_filename+'">download JSON</a>').appendTo('#bulk_json_content');
            document.getElementById('bulk_json_link').click();  
        }
    });
}

1 个答案:

答案 0 :(得分:2)

您需要在此处将数据转换为json。

首先运行此查询,这将以已知格式显示数据。

data = your_db.objects.all().values()

完成此操作后,您可以使用,

import json
data_json = json.loads(dumps(data))

此链接也可以为您提供更多帮助。('django serialize queryset.values() into json')