有很多关于如何序列化模型QuerySet的文档,但是如何将模型实例的字段序列化为JSON呢?


当前回答

要序列化和反序列化,请使用以下命令:

from django.core import serializers

serial = serializers.serialize("json", [obj])
...
# .next() pulls the first object out of the generator
# .object retrieves django object the object from the DeserializedObject
obj = next(serializers.deserialize("json", serial)).object

其他回答

这是一个项目,它可以序列化(JSON基础现在)你的模型中的所有数据,并将它们自动放在一个特定的目录,然后它可以在你想要的任何时候反序列化它…我个人用这个脚本序列化了数千条记录,然后将它们全部加载回另一个数据库,而没有丢失任何数据。

任何对开源项目感兴趣的人都可以贡献这个项目,并为其添加更多特性。

serializer_deserializer_model

这样怎么样:

def ins2dic(obj):
    SubDic = obj.__dict__
    del SubDic['id']
    del SubDic['_state']
return SubDic

或者排除你不想要的东西。

如果你正在询问如何序列化一个模型中的单个对象,并且你知道你只会在queryset中获得一个对象(例如,使用objects.get),那么可以使用如下方法:

import django.core.serializers
import django.http
import models

def jsonExample(request,poll_id):
    s = django.core.serializers.serialize('json',[models.Poll.objects.get(id=poll_id)])
    # s is a string with [] around it, so strip them off
    o=s.strip("[]")
    return django.http.HttpResponse(o, mimetype="application/json")

你会得到这样的东西:

{"pk": 1, "model": "polls.poll", "fields": {"pub_date": "2013-06-27T02:29:38.284Z", "question": "What's up?"}}

我通过在我的模型中添加一个序列化方法来解决这个问题:

def toJSON(self):
    import simplejson
    return simplejson.dumps(dict([(attr, getattr(self, attr)) for attr in [f.name for f in self._meta.fields]]))

下面是对那些讨厌一行程序的人的冗长等效:

def toJSON(self):
    fields = []
    for field in self._meta.fields:
        fields.append(field.name)

    d = {}
    for attr in fields:
        d[attr] = getattr(self, attr)

    import simplejson
    return simplejson.dumps(d)

_meta。Fields是模型字段的有序列表,可以从实例和模型本身访问。

使用列表,它将解决问题

步骤1:

 result=YOUR_MODELE_NAME.objects.values('PROP1','PROP2').all();

步骤2:

 result=list(result)  #after getting data from model convert result to list

步骤3:

 return HttpResponse(json.dumps(result), content_type = "application/json")