У меня есть модели User
и Role
. Модель пользователя имеет внешний ключ role
от модели Role
, как показано ниже.
Модель пользователя
class User(model.Model):
first_name = models.CharField(max_length=255, blank=False)
role = models.ForeignKey(Role, on_delete=models.CASCADE, blank=False)
Ролевая модель
class Role(models.Model):
role_name = models.CharField(max_length=255, blank=False, unique=True)
Я написал сериализатор для модели User
.
class User(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
role = serializers.IntegerField(required=True)
Я использую APIView
, чтобы получить список всех пользователей. Я хочу get()
метод APIVIew
в список возврата всех пользователей с role_name
вместо role_id
, как это -
[
{
"first_name":"Name",
"role": "Admin"
},
{
"first_name":"Name",
"role": "Merchant"
}
]
views.py
class ListUsers(APIView):
def get(self, request, formate=None):
admin_users = User.objects.all().values('first_name', 'role')
return Response(admin_users)
Мой ListUsers(APIView)
класс возвращает такой список -
[
{
"first_name":"Name",
"role":1
},
{
"first_name":"Name",
"role":2
}
]
Я хочу, чтобы мой APIView возвращал список пользователей, и каждый объект должен иметь role_name
вместо role_id
. Я не хочу использовать ModelSerializer
. Кроме того, у меня есть класс APIView()
, который создает объект для модели User
и использует тот же сериализатор. Мне нужно решение, которое не повлияет на функциональность создания пользователей.