我正在使用 djangorestframework 运行 django 4.0.6。
这是我的serializers.py
from django.contrib.auth import get_user_model
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer): # new
class Meta:
model = get_user_model()
fields = (
"id",
"username",
)
这是我的views.py
from django.contrib.auth import get_user_model
from rest_framework import generics
from .serializers import UserSerializer
class UserList(generics.ListCreateAPIView):
queryset = get_user_model().objects.all()
serializer_class = UserSerializer
这是 API 的 json 响应;
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"username": "test"
},
{
"id": 4,
"username": "test1"
},
{
"id": 8,
"username": "test3"
}
]
}
我想向 Django Rest 框架返回的 json 响应添加一个额外的属性,使其看起来像这样;
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"username": "test"
"combine" : "test 1"
},
{
"id": 4,
"username": "test1"
"combine" : "test1 4"
},
{
"id": 8,
"username": "test3"
"combine" : "test3 8"
}
]
}
额外属性combine
是通过连接id
和username
创建的。
最佳答案
您可以使用 SerializerMethodField :
class UserSerializer(serializers.ModelSerializer):
combine = serializers.SerializerMethodField()
class Meta:
model = get_user_model()
fields = (
"id",
"username",
"combine",
)
def get_combine(self, obj):
return f"{obj.username} {obj.id}"
关于python - 向 Django Rest 框架返回的 json 响应添加额外的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73612304/