2014-10-26 171 views
0

我創建了一個API,我需要以字典格式返回數據,以便它可以序列化(通過API機制)。將Django queryset轉換爲JSON序列化的字典

,目前的工作是非常簡單的東西代碼:

def mymethod(self): 

    queryset1 = MyClass.objects.get(...) # Ccontains 1 object, easy to deal with 
    queryset2 = OtherClass.objects.filter(...) # Contains N objects, hard to deal with ! 

    return { 
     'qs1_result': queryset1.some_attribute # This works well 
    } 

從queryset1返回的數據很容易,因爲有1個對象。我只是選擇我需要的屬性,它的工作原理。現在讓我們說,另外,我想從queryset2返回數據,那裏有很多對象,並且我不需要對象的每個屬性。

你會怎麼做?

我再說一遍,我不需要自己做序列化。我只需要返回結構化數據即可以進行序列化。

非常感謝。

回答

0

從Django文檔:https://docs.djangoproject.com/en/dev/topics/serialization/#subset-of-fields

領域 的子集,如果你只是想字段的子集被序列化,你可以指定一個字段參數串行:

from django.core import serializers 
data = serializers.serialize('json', SomeModel.objects.all(), fields=('name','size')) 

在這個例子中,只有每個模型的名稱和大小屬性會被序列化。

+0

我不能自己序列化數據。我只需要在結構化的詞典中返回數據。 – 2014-10-26 17:13:06

+0

也許這有幫助嗎? http://stackoverflow.com/questions/7811556/convert-a-django-queryset-into-list-of-dicts – 2014-10-26 17:32:51

+0

是的,謝謝我也看到了。這是第一步,因爲它給了我一個N個字典的列表(查詢集中每個對象1個字典)。 – 2014-10-26 17:45:09