Tarantino originally wanted Will Smith to play Django but Will came into the project trying to take over and rewrite it into something else and Tarantino told him to fuck off.
"Will Smith was Quentin Tarantino's original top choice to play Django in Django Unchained but turned down the role due to creative differences, specifically feeling that Django wasn't the true lead character and that the story should be about love rather than vengeance. Smith wanted the story to focus on a love story, not a revenge story, and couldn't reconcile with the film's violent direction. The part of Django ultimately went to
Jamie Foxx."