Django PasswordResetForm не отправляет письма пользователям с непригодными паролями

В моем Django-приложении я использую форму PasswordResetForm для того, чтобы пользователи могли сбрасывать свои пароли. Однако я заметил, что пользователи с непригодными паролями не получают писем о сбросе пароля. Метод get_users в PasswordResetForm отфильтровывает таких пользователей.

В документации Django говорится:

Метод get_users в PasswordResetForm также отфильтровывает пользователей с непригодным паролем, поэтому они также не получат письма. Вам придется либо назначить какой-то пароль для этих пользователей, либо переопределить этот метод в форме, чтобы не отфильтровывать их по этому условию.

Кроме того, я получаю ответ "200 OK" и вижу запись в журнале GET /password-reset/done/ HTTP/1.1" 200 6626, но электронные письма не отправляются.

Как я могу решить эту проблему? В частности, как я могу:

Присвойте полезный пароль пользователям, у которых есть непригодный пароль. Переопределите метод get_users в PasswordResetForm, чтобы включить пользователей с непригодными паролями.

Okay, I have found the solution by overriding the get_users method.

class PasswordResetForm(auth_forms.PasswordResetForm):
    def get_users(self, email):
        UserModel = get_user_model()
        email_field_name = UserModel.get_email_field_name()
        active_users = UserModel._default_manager.filter(
            **{f'{email_field_name}__iexact': email, 'is_active':True}
        )
        return (u for u in active_users)
Вернуться на верх