Для смены пароля пользователю необходимо подтвердить это действие через переход по ссылке, которое генерируется для него с помощью hash, который хранится в модели пользователя (ссылка улетает на email).
Вопрос где хранить новый пароль и вообще что бы то ни было, до тех пор, пока пользователь не подтвердил свои действия? Создавать поле в модели как-то не комильфо, мне кажется или это нормальная практика?
Или я вообще костыль делаю какой-то и есть уже готовый фреймворк на такие случаи?
При запросе сброса пароля генерировать ссылку и отправлять в почту, а новый пароль запрашивать уже после перехода по этой ссылке. Тогда кроме хэша ничего хранить не нужно.
Погуглите django recover password - вполне возможно использовать стандартные джанговские штуки не только для восстановления, но и для смены пароля просто.
Например: https://simpleisbetterthancomplex.com/tutorial/201...