2009-12-24 80 views
4

我似乎無法找到序列化既Django模型和Python字典在一起,其很常見的好辦法,我返回一個JSON響應,看起來像的Django JSON序列化與混合Django模型和字典

{ 
    "modified":updated_object, 
    "success":true 
    ... some additional data... 
} 

它簡單到足以使用simplejson序列化字典或Django的serializers.serialize序列化模型,但是當我將它們混合在一起我會得到錯誤。

有沒有更好的方法來做到這一點?

回答

10

難道你不能只是將模型實例轉換爲字典,加入其他字典,然後序列化?

from django.forms import model_to_dict 

dict = model_to_dict(instance) 
dict.update(dict2) 

... Then serialize here ... 

不知道怎麼當 「好」 ... :-)

+0

也許不完美,但對我來說足夠好! – Michael 2009-12-24 19:37:34

+0

model_to_dict的源代碼可以在https://github.com/django/django/blob/master/django/forms/models.py找到感謝您的答案! – Pramod 2012-09-18 17:11:41

2

我使用這個(其中products是查詢集):

response = {} 
products_list = list(products.values('id', 'name', 'description')) 
response['products'] = products_list 
response['more_data'] = 'more, more, more, things' 

json_data = json.dumps(response) 

使用這種方法,你可以只選擇你想要的字段(使json和數據庫查詢更小)。