【发布时间】:2022-08-23 22:37:52
【问题描述】:
如何在 Django rest 框架 Model Serializer 中读写多个模型。就像我创建了一个用户创建模型视图集 API,为此,我创建了一个模型序列化器。那里我需要授予多个权限。为此,我将 user_permissions 字段与权限 ID 数组一起传递。现在,如何在用户模型序列化器中定义一个字段,可以创建具有此权限的用户,然后获取具有权限的用户的数据?
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = AbstractUser
fields = \"__all__\"
extra_kwargs = {\'password\': {\'write_only\': True},}
extra_fields = [\'user_permissions\']
#view
class RegistrationView(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = AbstractUser.objects.all()
parser_classes = (FormParser, MultiPartParser)
permission_classes_by_action = [IsAdminUser, ]
def create(self, request, *args, **kwargs):
response_data = super(RegistrationView, self).create(request,*args,**kwargs)
return Response({\"data\": response_data.data})
请求正文
{
\"username\": \"testuser\",
\"email\": \"testuser@example.com\",
\"first_name\": \"test\",
\"last_name\": \"test\",
\"password\": \"Abcd@123456\",
\"user_permissions\": [1, 2, 3, 4, 5]
}
需要的回应
{
\"id\": 1,
\"email\": \"testuser@example.com\",
\"username\": \"testuser\",
\"first_name\": \"test\",
\"last_name\": \"test\",
\"is_superuser\": false,
\"is_staff\": false,
\"is_active\": true,
\"date_joined\": \"2022-08-17T10:25:48.446821Z\",
\"user_permissions\": [
{
\"id\": 1,
\"name\": \"Can add User\",
\"codename\": \"add_user\",
\"content_type\": \"account\"
},
{
\"id\": 2,
\"name\": \"Can change User\",
\"codename\": \"change_user\",
\"content_type\": \"account\"
},
{
\"id\": 3,
\"name\": \"Can delete User\",
\"codename\": \"delete_user\",
\"content_type\": \"account\"
},
{
\"id\": 4,
\"name\": \"Can view User\",
\"codename\": \"view_user\",
\"content_type\": \"account\"
},
{
\"id\": 5,
\"name\": \"Can view log entry\",
\"codename\": \"view_logentry\",
\"content_type\": \"admin\"
}
],
\"groups\": []
}
标签: django django-models django-rest-framework django-serializer