1. В модели django.contrib.auth.models.User
уже есть поля first_name
и last_name
- дополнительные копии не принесут ясности, наоборот, рано или поздно в базе образуется бардак и будет непонятно, где настоящие имя и фамилия, и вообще неясен смысл такой денормализации
2. Непонятно, зачем вам метод save_user
— он ничего не делает и абсолютно не нужен
3. Правильнее назвать поле user
вместо username
4. Теоретически (зависит от ваших требований) правильнее создавать свою модель пользователя и ссылаться на нее как settings.AUTH_USER_MODEL
5. В определении полей с null=True, blank=True
не нужен default
— по умолчанию и так будет None
6. Странная модель, в которой все поля могут быть NULL - скорее это от непонимания
7. Для ваших целей правильнее использовать django.views.generic.edit.CreateView, django.views.generic.edit.UpdateView, и код будет короче, и даже форму можно не определять
8. В redirect
написана какая-то дичь!
9. При использовании настроек по умолчанию, все view и так защищены от CSRF, нет необходимости явно писать декоратор csrf_protect
А в общем и целом, вам надо начать хотя бы с прочитения Django Tutorial. Вы явно пишете код не понимая, что пишете и зачем. Отсюда и проблемы.