【发布时间】:2020-06-19 07:53:16
【问题描述】:
我有模型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 来获取所有用户的列表。我希望 APIVIew 的 get() 方法返回所有使用 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 创建一个对象,它使用相同的序列化程序。我想要一个不会影响创建用户功能的解决方案。
【问题讨论】:
-
我不确定我是否理解正确。在创建过程中会扮演什么样的角色——即当客户端发送数据时?名字还是身份证?