I think the answer to this question definitely varies. It all depends on where you are at in your career/how good you are. I agree with charging a flat rate. However, if it is going to be a tough shoot, charge hourly as you may end up getting more bang for your buck. But, if you are just starting out I don't think it hurts to do one for free or very cheap to build your portfolio.