有很多关于如何序列化模型QuerySet的文档,但是如何将模型实例的字段序列化为JSON呢?
当前回答
使用列表,它将解决问题
步骤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")
其他回答
如果你想将单个模型对象作为json响应返回给客户端,你可以做这个简单的解决方案:
from django.forms.models import model_to_dict
from django.http import JsonResponse
movie = Movie.objects.get(pk=1)
return JsonResponse(model_to_dict(movie))
似乎你不能序列化实例,你必须序列化一个对象的QuerySet。
from django.core import serializers
from models import *
def getUser(request):
return HttpResponse(json(Users.objects.filter(id=88)))
我运行了django的svn释放,所以这可能不是在早期版本。
下面是我的解决方案,它允许您轻松地自定义JSON以及组织相关记录
首先在模型上实现一个方法。我调用的是json,但你可以叫它任何你喜欢的,例如:
class Car(Model):
...
def json(self):
return {
'manufacturer': self.manufacturer.name,
'model': self.model,
'colors': [color.json for color in self.colors.all()],
}
然后在视图中:
data = [car.json for car in Car.objects.all()]
return HttpResponse(json.dumps(data), content_type='application/json; charset=UTF-8', status=status)
让这是一个农作物序列化器,做如下所示。对我有用,当然对你也有用。
首先导入序列化器
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()的详细信息。
这样怎么样:
def ins2dic(obj):
SubDic = obj.__dict__
del SubDic['id']
del SubDic['_state']
return SubDic
或者排除你不想要的东西。
推荐文章
- 如何在django应用程序中显示favicon ?
- 如何在Django中设置时区
- django导入错误-没有core.management模块
- 如何从外部访问本地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转换为列表?