Как получить пароль самолета пользователя Django admin в сигнале pre_save при создании пользователя из панели администратора?

Мне нужно регистрировать пользователей Django admin в 3ed party authentication service. Для этого мне нужен пароль на плоскости без хэширования. Здесь я использовал сигнал pre_save. Этот подход хорошо работает, когда я создаю конечную точку API для регистрации. Но когда я создаю пользователя администратора из Django, он всегда приходит с дефалютным хэшированным паролем.

Есть идеи, как получить пароль от самолета?

Вы должны получить доступ к объекту request, чтобы получить эти данные.

Вы можете использовать @hooks.register('before_create_user') для регистрации метода, который будет запущен перед созданием пользователя, и получить пароль с помощью password=request.POST['password1']. Имейте в виду, что этот хук запускается при загрузке формы, а также при ее отправке. Чтобы получить пароль, вам нужно запустить его только при отправке формы.

@hooks.register('before_create_user')
def before_create(request: 'HttpRequest') -> 'HttpResponse':
    if request.method != 'POST': 
        return    # Ignore execution when form loads
    body = request.POST
    form = get_user_creation_form()(body, request.FILES)    # Get the associated form
    if not form.is_valid():
        return     # If the form submission is invalid, return
    password=body['password1']    # Get raw password
Вернуться на верх