Django 如何嵌套序列化程序?
因此,我试图创建一个/api/info url,在我的应用程序中返回各种数据。它从各种模型中提取数据,并将其放在一个响应中。我得到以下信息:Django 如何嵌套序列化程序?,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,因此,我试图创建一个/api/info url,在我的应用程序中返回各种数据。它从各种模型中提取数据,并将其放在一个响应中。我得到以下信息: class SessionInfo(generics.GenericAPIView): def get(self, request, format=None): token = Token.objects.get(user=self.request.user) userprofile = UserProfile.ob
class SessionInfo(generics.GenericAPIView):
def get(self, request, format=None):
token = Token.objects.get(user=self.request.user)
userprofile = UserProfile.objects.get(user=self.request.user)
is_admin = self.request.user.is_staff
is_primary_owner = userprofile.primary_owner
managers = userprofile.reports_to.all()
man = ["test manager 1", "test manager 2"]
pages = Page.objects.filter(published=True, show_in_menu=True)
pages_output = JSONRenderer().render(PageSerializer(pages).data)
content = {
'user': {
"username": str(self.request.user.username),
"first_name": str(self.request.user.first_name),
"last_name": str(self.request.user.last_name),
"is_admin": is_admin,
"is_primary_owner": is_primary_owner,
"api_token": token.key,
"timezone": 'blalala',
"managers": man,
},
'license': {
"plan" : "gold",
"expiry_date" : "lol",
},
'feature_flags': {
'billing_test': False,
},
'pages': { pages_output },
}
return Response(content)
但是,它没有正确序列化和呈现页面,而是使其成为转义字符串:
{
"feature_flags": {
"billing_test": false
},
"user": {
"username": "test@user.com",
"first_name": "Test",
"last_name": "User",
"is_admin": true,
"managers": [
"test manager 1",
"test manager 2"
],
"api_token": "08d1a5827da9a90e7746949ffd2e69e87c51b272",
"timezone": "blalala",
"is_primary_owner": false
},
"license": {
"expiry_date": "lol",
"plan": "gold"
},
"pages": [
"[{\"id\": 1, \"title\": \"Trololol\"}, {\"id\": 2, \"title\": \"NEW pages\"}]"
]
}
如果我直接使用pages\u output=PageSerializerpages,我会得到:
<webapp_api_v1.serializers.PageSerializer object at 0x10a0d8f90> is not JSON serializable
如何使序列化程序正确嵌套在构造的响应中?谢谢 通过pages\u output=PageSerializerpages.data并更改“pages”:pages\u output