0
我環顧了過去幾天,無法找到一個好辦法來做到這一點。我發現了一些其他的線程,但似乎沒有任何工作需要它的方式。Django-rest-framework序列化多個查詢,但沒有相關的字段
這裏是問題:我想能夠序列化多個查詢的結果以返回給用戶,以便他們不必在多個端點連接到API,因此服務器可以完成所有重必要時起吊。
我使用APIView和view.py中的獲取請求。
我已經嘗試從itertools使用鏈,但我似乎無法以任何方式訪問串行器中的數據。我試過傳遞一個包含兩個查詢結果的字典,但似乎也沒有工作。
有可能是一個非常簡單的方法來解決這個問題,但我似乎無法找到任何文檔。
這是代碼的簡化一塊這樣的人很容易回答:
views.py
class ModelOutputList(APIView):
def get(self, request):
data = self.get_queryset()
serializer = ModelOutputSerializer(
data,
many=True
)
return Response(serializer.data)
def get_queryset(self):
model1 = Model1.objects.all()
model2 = Model2.objects.all()
data = list(itertools.chain(model1, model2))
return data
serializers.py
class ModelOutputSerializer(serializers.Serializer):
model1 = Model1Serializer(many=True)
model2 = Model2Serializer(many=True)
class Meta:
fields = ('model1', 'model2')
與往常一樣,任何幫助將不勝感激。
Woops我沒有看到編輯的views.py我現在會檢查。謝謝。 – prawg
我得到以下錯誤: 嘗試獲取序列化器'Model1Serializer'上字段'model1'的值時出現AttributeError。 序列化程序字段可能命名錯誤,並且不匹配'str'實例上的任何屬性或鍵。 原始異常文本是:'str'對象沒有屬性'model1'。 – prawg
這將在瀏覽器中輸出正確的json。 AttributeError必須從其他代碼中引發。 – JimmyYe