Leave the former to 12-year-old Laurence Belcher. The English child actor has some pretty impressive credits to his name despite only being in show biz for five years.
Per IMDB, Belcher's previous films include X-Men: First Class, in which he played Professor Charles Xavier at age 12, as well as starring as Young Kazran in the British TV series Dr. Who.
How close do you think he resembles the real William? We'll let you be the judge.
As for Prince Harry, he's being played by Harry Holland, the younger brother of Tom Holland, who's not pictured but costarred with Watts in last year's critically acclaimed drama, The Impossible. Harry Holland played a bit part as the Kid in the Tent in that movie in case you were wondering,.
Diana, which looks likely to generate Oscar buzz, hits theaters later this year.