有很多关于如何序列化模型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
其他回答
使用python格式的Django Serializer,
from django.core import serializers
qs = SomeModel.objects.all()
serialized_obj = serializers.serialize('python', qs)
json和python格式有什么区别?
json格式将以str格式返回结果,而python将以list或OrderedDict格式返回结果
让这是一个农作物序列化器,做如下所示。对我有用,当然对你也有用。
首先导入序列化器
from django.core import serializers
然后你可以这样写
class CropVarietySerializer(serializers.Serializer):
crop_variety_info = serializers.serialize('json', [ obj, ])
或者你可以这样写
class CropVarietySerializer(serializers.Serializer):
crop_variety_info = serializers.JSONField()
然后在views.py中调用这个序列化器 详情请访问https://docs.djangoproject.com/en/4.1/topics/serialization/ 序列化器。JSONField(*args, **kwargs)和serializer .JSONField()是相同的。您也可以访问https://www.django-rest-framework.org/api-guide/fields/了解JSONField()的详细信息。
ville = UneVille.objects.get(nom='lihlihlihlih')
....
blablablab
.......
return HttpResponse(simplejson.dumps(ville.__dict__))
我返回我实例的字典
所以它会返回类似{'field1':value,"field2":value,....}
要序列化和反序列化,请使用以下命令:
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
如果你正在询问如何序列化一个模型中的单个对象,并且你知道你只会在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?"}}
推荐文章
- 如何从外部访问本地Django web服务器
- 在Django模型中存储电话号码的最佳方法是什么?
- 如何禁用django-rest-framework的管理风格的可浏览界面?
- 如何获取请求。Django-Rest-Framework序列化器中的用户?
- 如何在Django模板中获得我的网站的域名?
- 在django Forms中定义css类
- 我应该在.gitignore文件中添加Django迁移文件吗?
- SQLAlchemy是否有与Django的get_or_create等价的函数?
- 如何选择一个记录和更新它,与一个单一的查询集在Django?
- Django REST框架:向ModelSerializer添加额外字段
- 如何在django上自动化createsuperuser ?
- 如何将Django QuerySet转换为列表?
- 如何直接从测试驱动程序调用自定义的Django manage.py命令?
- 在Python Django中运行单元测试时,如何禁用日志记录?
- Django CSRF检查Ajax POST请求失败