2010-03-06 106 views
11

我試圖想出一個辦法來序列一些Django的模型對象JSON格式,是這樣的:Django的序列化一個對象

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表示,但是我不知道如何獲得那個散列。

回答

22

剛剛按序從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表示法中的對象。

+0

爲我工作。謝謝 – khelll 2010-03-10 16:08:10

4

我會建議使用Django的model_to_dict。如果我沒有弄錯,serializers.serialize()也依賴於它,但它只適用於list,而不是單個模型實例。這就是你得到一個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) 
+0

該死的,那正是我一直在尋找的。 – Broccoli 2016-11-26 12:39:13