2011-11-07 61 views
1

我有這些模型:Django的MongoDB的查詢集結果存入JSON

class Projects(models.Model): 
    projectName =models.CharField(max_length = 100,unique=True,db_index=True) 
    projectManager = EmbeddedModelField('Users') 

class Users(models.Model): 
    name = models.CharField(max_length = 100,unique=True) 
    designation = models.CharField(max_length =100) 

我需要從我的所有項目對象視圖返回JSON,我試圖json.dumps(Projects.objects.all()),但它沒有工作,我怎麼做到了?

編輯: 我用json.dumps(Projects.objects.all()值()),並得到了這一點:

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "D:\Python27\lib\json\__init__.py", line 238, in dumps 
    **kw).encode(obj) 
    File "D:\Python27\lib\json\encoder.py", line 203, in encode 
    chunks = list(chunks) 
    File "D:\Python27\lib\json\encoder.py", line 436, in _iterencode 
    o = _default(o) 
    File "D:\Python27\lib\json\encoder.py", line 178, in default 
    raise TypeError(repr(o) + " is not JSON serializable") 
TypeError: [{'projectName': u'HELLO', 'projectManager': {u'id': u'4eb3b792b990a24e49f6bb26', u'name': u'anshul', u'designation': u'programmer', u'teams': []}, ' 
id': u'4eb3b7d0e814520db4000000'}] is not JSON serializable 

現在,我得到了我想要的,但爲什麼結果這也給我錯誤。

回答

0

查詢集不可序列化。您可以嘗試使用list(self.objects)而不是self.objects來強制將查詢集作爲列表進行處理。在你的情況下嘗試這樣的事情

json.dumps(list(Projects.objects.all().values()))
+0

謝謝icewind ... – user818455

1

嘗試Jason.dumps- 0123'的結果。

+0

杜格爾請檢查我的編輯,看看你能不能幫我......我覺得你的回答是非常接近我想要什麼 – user818455

+0

@icewind是正確的 - 你想要轉儲Queryset.values()的列表版本,以製作字典列表(而不是像字典列表那樣的對象)。 – Dougal