Добавьте дополнительное свойство к этому json-ответу, возвращаемому фреймворком Django rest
Я использую django 4.0.6 с djangorestframework.
Это моя 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
Вот json-ответ API;
{
"count": 3,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"username": "test"
},
{
"id": 4,
"username": "test1"
},
{
"id": 8,
"username": "test3"
}
]
}
Я хотел бы добавить дополнительное свойство к этому json-ответу, возвращаемому Django rest framework, чтобы он выглядел следующим образом;
{
"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}"