1. Как мы заметили, news_author не берёт из User User.username. Поле превращается в news_author_id и из User берётся User.pk (id). Брать last_name глупо, ибо коллизии неизбежны. Другое дело, что ты видишь username, потому что у юзера в методе __unicode__ стоит return self.username. Чтобы выводить то, что ты хочешь - используй его же методы или атрибуты (get_full_name или last_name, как ты хочешь).
2. Почему подавляющее большинство хлебом не корми - дай обозвать криво атрибуты? Вот зачем делать атрибуты news_author, news_title, news_content, если у тебя модель УЖЕ называется News?
3.
def get_absolute_url(self):
return "/news/%s/" % self.slug
Это плохо. Резберись с функцией reverse (ну и reverse_lazy) и тегом шаблона {% url %}