I think defining functions to do this work is the right approach.  However, it's a little confusing to call the functions "factories", because factories are usually objects.  

AFAIK `factory_boy` doesn't have a documented way to add extra setup to an existing factory.  Maybe rename these functions to something like `create_instructor()` and `create_staff()`?  If you wanted to make it clear in the test code that these are using other factories, you could use the module name when calling the functions, something like:

     factories.create_instructor(course)