【发布时间】:2021-08-25 02:27:47
【问题描述】:
目前,我正在做一个 DFR 项目,该项目可以成功获取所有数据,但我需要对 json 数据进行一些修改。
这是代码
class PermissionSerializers(serializers.ModelSerializer):
class Meta:
model = Permission
fields = ['id', 'name', 'codename']
def to_representation(self, instance):
return {
'model': instance.content_type.name,
'data' :{
'id': instance.id,
'name': instance.name,
'codename': instance.codename,
}
}
我得到了这种 JSON 格式,
{
"next": "http://127.0.0.1:8000/en/ga/api-version/common/admin/permissions/?page=4",
"previous": "http://127.0.0.1:8000/en/ga/api-version/common/admin/permissions/?page=2",
"total": 33,
"page": 3,
"page_size": 10,
"results": [
{
"model": "user",
"data": {
"id": 25,
"name": "Can add user",
"codename": "add_user"
}
},
{
"model": "user",
"data": {
"id": 29,
"name": "Admistrative Access",
"codename": "admin_access"
}
},
但我想用这样的东西进行修改,上面有模型名称,然后是字典中的所有可用数据:
{
"model": "user",
"data": {
"id": 26,
"name": "Can change user",
"codename": "change_user"
},
{
"id": 25,
"name": "Can add user",
"codename": "add_user"
},
},
【问题讨论】:
-
你能展示一下你的观点吗?
-
这里是视图:
class PermissionListView(ListAPIView):queryset = Permission.objects.all()serializer_class = PermissionSerializers -
在这种情况下,您必须在您的
to_representation中删除model,然后修改listapi 视图的结果以执行以下操作:result = {'model': 'user', 'data': serializer.data} -
但在这种情况下,模型是动态的。而且每个模型都有自己的权限
-
那么这个视图和序列化器使用了不同的模型?
标签: django django-models serialization django-rest-framework django-serializer