I am using code from https://stackoverflow.com/a/19337404/4507367 answer
@api_view(['POST'])
def register(request):
VALID_USER_FIELDS = [f.name for f in get_user_model()._meta.fields]
serialized = UserSerializer(data=request.data)
if serialized.is_valid():
user_data = {field: data for (field, data) in request.data.items() if field in VALID_USER_FIELDS}
user = get_user_model().objects.create_user(
**user_data
)
return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED)
else:
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
to register users, but I want the registration to fail if registration request has email that is already used. This probably can be done with filtering all users by user_data['email'] and denying the request if email already exists but it feels like a bad practice. There has to be a better way!