用于一个对象的Django序列化程序

时间:2010-03-06 01:31:05

标签: python django json

我正试图想出一种将一些Django模型对象序列化为JSON格式的方法,如:

j = Job.objects.get(pk=1)
##############################################
#a way to get the JSON for that j variable???
##############################################

我不想要:

from django.core import serializers
serializers.serialize('json', Job.objects.get(pk=1),ensure_ascii=False)

因为它返回JSON数组,而不是单个对象表示。

有什么想法吗?

我正在考虑的一种方法是:找到一种方法来获取对象的哈希(属性,值),然后使用simplejson来获取它的JSON表示,但是我不知道如何得到它散列。

3 个答案:

答案 0 :(得分:27)

如何只是按摩你从serializers.serialize回来的内容?从结果的正面和背面剪掉方括号并不难。

job = Job.objects.get(pk=1)
array_result = serializers.serialize('json', [job], ensure_ascii=False)
just_object_result = array_result[1:-1]

不是一个奇特的答案,但它只会给你json表示法中的对象。

答案 1 :(得分:7)

我建议使用Django' dict。如果我没有弄错,from django.forms.models import model_to_dict # assuming obj is your model instance dict_obj = model_to_dict( obj ) 也会依赖它,但它仅适用于json.dumps不适用于单个模型实例。这就是如何从单个模型中获取模型字段的import json json.dumps(dict_obj) 实例:

$scope.data = a

您现在只需要一个 let tripDetailController = self.storyboard!.instantiateViewControllerWithIdentifier("tripDetailController") as! TripDetailController tripDetailController.trip = trip self.navigationController?.pushViewController(tripDetailController, animated: true) 电话:

takeOrdered

答案 2 :(得分:1)

方法1

python 格式使用Django序列化程序

from django.core import serializers

j = Job.objects.get(pk=1)
response = serializers.serialize('python', [j], ensure_ascii=False)

方法2

在序列化时使用 json 格式并 加载 字符串响应

import json
from django.core import serializers

j = Job.objects.get(pk=1)
json_str_response = serializers.serialize('json', [j], ensure_ascii=False)
response = json.loads(json_str_response)

方法3

使用Django REST Framework's Serializer class 定义一个序列化器类并将实例序列化为

from rest_framework import serializers


class JobSerializer(serializers.ModelSerializer):
    class Meta:
        model = Job
        fields = '__all__'


j = Job.objects.get(pk=1)
response = JobSerializer(instance=j).data

参考
1. Serializer Django model object

相关问题