2010-10-25 92 views
3

如果我想包含外鍵模型字段,如何序列化json格式的Django模型?使用外鍵模型序列化django模型

如果我有:

class Model1(models.Model): 
    name=models.CharField() 
    child=models.ForeignKey(Model2) 

class Mode2(models.Model): 
    field1=models.CharField() 
    field2=models.IntegerField() 

我想包括JSON一切......

回答

2

我有類似的問題,所以我採取了一些我之前完成的代碼,並對其進行了改進。它實際上結束了一個完整的python序列化框架SpitEat。你可以下載試試看here。該文檔是不是很好嗎,所以這裏是你必須使用序列化你的東西代碼:

>>> from spiteat.djangosrz import DjangoModelSrz #you should actually put spiteat in your path first 
>>> Model1Srz = DjangoModelSrz.factory(Model1) 
>>> srz_instance = Model1Srz(some_obj_you_want_to_serialize) 
>>> srz_instance.spit() 
... { 
... 'pk': <a_pk>, 
... 'id': <an_id>, 
... 'name': <a_name>, 
... 'child': { 
...  'pk': <another_pk>, 
...  'id': <another_id>, 
...  'field1': <a_value>, 
...  'field2': <another_value> 
... } 
... } 

所以,完整的,深刻的序列。你可以自定義事物(選擇包含的字段等等......但還沒有測試過,而且沒有很好的文檔)。 隨着代碼的發展,文檔在未來幾天會變得更好,所以您可以開始使用它,而不用擔心不會有任何支持!

當然,一旦你有你的對象序列化,只需使用json爲:

>>> import json 
>>> json_srz = json.dumps(srz_instance.spit()) 

你有你來幹什麼!

+0

請工作鏈接? :)) – Broccoli 2016-11-26 20:32:44

1

它一直有時,我沒有對Django的工作,但是這是對你的工作?

import simplejson as json 

data = Model1.objects.get(pk=some_id) 

to_dump = {'pk': data.pk, 'name':data.name, 
      'fields':{'field_1':data.child.field_1, 
        'field_2':data.child.field_2 
        } 
      } 

json_data = json.dumps(to_dump) 
+0

但我需要做的與過濾器...和它看起來像我需要做的一樣,但在循環..我想,必須有更簡單的方法... – Pol 2010-10-25 16:43:24