BL4CK R4BBIT
July 5, 2019, 1:02 p.m.

Ссылка в админке под полем пароль

После смены модели на AbstractUser И создания форм регистрации и редактирования в админке пропала строка с надпись о пароле и ссылки на его смену. В профиле пользователя все работает прекрасно. Как вернуть строку

2

Do you like it? Share on social networks!

6
Evgenii Legotckoi
  • July 5, 2019, 7:13 p.m.

Добрый день!

А можете показать программный код как задавали форму для админки, а также саму подмель данных?

Скорее всего там нужно использовать форму UserAdmin

    BL4CK R4BBIT
    • July 5, 2019, 8:16 p.m.

    весь код выполняется без ошибок. Группы заменены на должности. Все Ок. Но системные сообщения(инфо) в админке под полями формы не выводятся.

      BL4CK R4BBIT
      • July 5, 2019, 8:22 p.m.

      Просто я как бы с джанго как д.Стренж с санскритом)

        Evgenii Legotckoi
        • July 5, 2019, 8:24 p.m.

        Сообщения под полями формы не выводятся потому, что вы их не написали. Эти сообщения нужно написать прямо в полях в модели данных. За это отвечает help_text .

        1. sur_name = models.CharField(max_length=True, db_index=True, help_text='Фамилия', verbose_name='Фамилия')

        И у меня убедительная просьба к вам. Добавляйте, пожалуйста, программный код через диалог вставки программного кода, а не в виде изображений.

          Evgenii Legotckoi
          • July 5, 2019, 8:25 p.m.

          Думаю, что ссылка на изменение пароля в оригинальном поле также делается через help_text, но возможно с html кодом.

            BL4CK R4BBIT
            • July 5, 2019, 9:55 p.m.
            • The answer was marked as a solution.

            Решение нашел. Спасибо за указанное направление поиска. Оставил код формы

            1. from django import forms
            2. from django.contrib.auth import password_validation
            3. from django.core.exceptions import ValidationError
            4. from django.contrib.auth.forms import ReadOnlyPasswordHashField
            5. from .models import MedicalUser
            6.  
            7. class ChangeUserInfoForm(forms.ModelForm):
            8. username = forms.CharField(required=True, label='Имя пользователя')
            9. password = ReadOnlyPasswordHashField(label= ("Password"),
            10. help_text= ("Необработанные Пароли не сохраняются, поэтому нет никакого способа увидеть "
            11. "пароль этого пользователя, но вы можете изменить пароль "
            12. "с помощью <a href=\"../password/\">этой формы</a>."))
            13.  
            14. class Meta:
            15. model = MedicalUser
            16. fields = ('username', 'email', 'first_name', 'last_name')
            17.  
            18. def clean_password(self):
            19. # Regardless of what the user provides, return the initial value.
            20. # This is done here, rather than on the field, because the
            21. # field does not have access to the initial value
            22. return self.initial["password"]
            23.  
            24. class CreateUserForm(forms.ModelForm):
            25. username = forms.CharField(required=True, label='Имя пользователя')
            26. password1 = forms.CharField(label='Пароль',
            27. widget=forms.PasswordInput,
            28. help_text=password_validation.password_validators_help_text_html())
            29. password2 = forms.CharField(label='Пароль (повторно)',
            30. widget=forms.PasswordInput,
            31. help_text='Введите тот же пароль повторно для проверки')
            32.  
            33. def clean_password1(self):
            34. password1 = self.cleaned_data['password1']
            35. if password1:
            36. password_validation.validate_password(password1)
            37. return password1
            38.  
            39. def clean(self):
            40. super().clean()
            41. password1 = self.cleaned_data['password1']
            42. password2 = self.cleaned_data['password2']
            43. if password1 and password2 and password1 !=password2:
            44. errors = {'password2': ValidationError (
            45. 'Введенные пароли не совпадают', code='password_mismatch')}
            46.  
            47. def save(self, commit=True):
            48. user = super(CreateUserForm, self).save(commit=False)
            49. user.set_password(self.cleaned_data['password1'])
            50. if commit:
            51. user.save()
            52. return user
            53.  
            54. class Meta:
            55. model = MedicalUser
            56. fields = ('username', 'email', 'password1', 'password2', 'first_name', 'last_name')

              Comments

              Only authorized users can post comments.
              Please, Log in or Sign up
              • Last comments
              • AK
                April 1, 2025, 11:41 a.m.
                Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
              • Evgenii Legotckoi
                March 9, 2025, 9:02 p.m.
                К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
              • VP
                March 9, 2025, 4:14 p.m.
                Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
              • ИМ
                Nov. 22, 2024, 9:51 p.m.
                Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
              • Evgenii Legotckoi
                Oct. 31, 2024, 11:37 p.m.
                Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup