Я бы предложил другой подход к этому.
Когда вы создаете пользователя, установите для активного флага значение false. поэтому учетная запись не активна и не может войти в систему.
Не нужно создавать пароль, оставьте его пустым.
Вместо этого создайте URL со специальным токеном и отправьте URL. Если пользователь перейдет по этому URL-адресу, он предоставит форму для установки пароля для этого пользователя.
Эта ссылка используется только один раз, и срок ее действия может истечь даже через определенное количество дней.
Вы можете взглянуть на PasswordResetTokenGenerator
в django.contrib.auth.tokens
, чтобы увидеть, как генерировать такие токены и изменять его соответствующим образом.
Вам также нужно будет сгенерировать URL, чтобы каким-то образом указать, какого пользователя использовать (возможно, затенить его). как-то как то не видно).