有很多关于如何序列化模型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")
其他回答
.values()是我需要将模型实例转换为JSON。
.values()文档:https://docs.djangoproject.com/en/3.0/ref/models/querysets/#values
名为Project的模型的示例使用。
注意:我使用的是Django Rest Framework
from django.http import JsonResponse
@csrf_exempt
@api_view(["GET"])
def get_project(request):
id = request.query_params['id']
data = Project.objects.filter(id=id).values()
if len(data) == 0:
return JsonResponse(status=404, data={'message': 'Project with id {} not found.'.format(id)})
return JsonResponse(data[0])
有效id的结果:
{
"id": 47,
"title": "Project Name",
"description": "",
"created_at": "2020-01-21T18:13:49.693Z",
}
要序列化和反序列化,请使用以下命令:
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响应返回给客户端,你可以做这个简单的解决方案:
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))
使用列表,它将解决问题
步骤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")
似乎你不能序列化实例,你必须序列化一个对象的QuerySet。
from django.core import serializers
from models import *
def getUser(request):
return HttpResponse(json(Users.objects.filter(id=88)))
我运行了django的svn释放,所以这可能不是在早期版本。
推荐文章
- Django:“projects”vs“apps”
- 我如何在Django中过滤一个DateTimeField的日期?
- 如何在Django中序列化一个模型实例?
- Django更改默认的runserver端口
- 如何限制Django模型中数值字段的最大值?
- 获取对象的Django管理url
- Django可选url参数
- 我如何提高一个响应禁止在django
- 使用Django South进行向后迁移
- 如何访问Django模板中的字典元素?
- Pylint在Visual Studio代码中“未解决的导入”错误
- 如何更改Django应用程序的名称?
- 在django的form字段中默认创建空的queryset
- 在django模型自定义save()方法中,你应该如何识别一个新对象?
- 从URL中获取参数