Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 132

Кастомная модель пользователя

20.10.2015, 18:48. Показов 812. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Возникла не понятная ошибка... создал свою модель пользователя
модель:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class AuthUserManager(BaseUserManager):
    def create_user(self, username, email, password=None):
        if not email:
            raise ValueError('User must have email')
        if not username:
            raise ValueError('User must have username')
        user = self.model(username=username, email=self.normalize_email(email))
        user.is_active = True
        user.set_password(password)
        user.save(using=self._db)
        return user
 
    def create_superuser(self, username, email, password):
        user = self.creat_user(username=username, email=email, password=password)
        user.is_staff = True
        user.is_superuser = True
        user.save(using=self._db)
        return user
 
 
class AuthUser(AbstractBaseUser, PermissionsMixin):
    alphanumeric = RegexValidator(r'^[0-9a-zA-Z]*$', message='Only alphanumeric characters are allowed.')
    username = models.CharField(unique=True, max_length=30, validators=[alphanumeric])
    email = models.EmailField(verbose_name='email field', unique=True, max_length=255)
    first_name = models.CharField(max_length=50, null=True, blank=True)
    second_name = models.CharField(max_length=50, null=True, blank=True)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    date_joined = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True, null=False)
    is_staff = models.BooleanField(default=False, null=False)
    # profile_image = models.ImageField(upload_to='uploads', blank=False, default='/static/defaultprofileimage.png')
    user_bio = models.TextField()
 
    objects = AuthUserManager()
 
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']
 
    def get_full_name(self):
        return '%s %s %s' .format(self.last_name, self.first_name, self.second_name)
 
    def get_short_name(self):
        return self.username
 
    def __str__(self):
        return self.email
сеттингс вписал:
Python
1
AUTH_USER_MODEL = 'app.models.AuthUser'
далее админку прикрепил и все пошло не так...
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class AuthUserCreationForm(UserCreationForm):
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
    password2 = forms.CharField(label='Password Confirmation', widget=forms.PasswordInput)
 
    class Meta(UserCreationForm):
        model = AuthUser
        fields = ('email', 'username')
 
    def clean_username(self):
        username = self.clean_data['username']
        try:
            AuthUser._default_managet.get(username=username)
        except Authuser.DoesNotExist:
            return username
        raise forms.ValidationError(self.error_messages['duplicate_username'])
 
    def clean_password2(self):
        password1 = self.cleaned_data.get('password1')
        password2 = self.cleaned_data.get('password2')
        if password1 and password2 and password1 != password2:
            raise forms.ValidationError('Password do not match.')
        return password2
 
    def save(self, commit=True):
        user = super(UserCreationForm, self).save(commit=False)
        user.set_password(self.cleaned_data['password1'])
        if commit:
            user.save()
        return user
 
class AuthUserChangeForm(UserChangeForm):
    password = ReadOnlyPasswordHashField(label='password', help_text='There is no way too see this password.')
 
    class Meta(UserChangeForm.Meta):
        model = AuthUser
        fields = ('username', 'email', 'password', 'is_active', 'is_staff', 'is_superuser', 'user_permissions')
 
    def clean_password(self):
        return self.initial['password']
 
class AuthUserAdmin(UserAdmin):
    form = AuthUserChangeForm
    add_form = AuthUserCreationForm
 
    list_display = ('username', 'email', 'is_staff', 'is_superuser',)
    list_filter = ('is_superuser')
 
    fieldsets = (
        (None, {'fields': ('username', 'email', 'password', 'firs_name', 'second_name', 'last_name', 'user_bio')}),
        ('Permissions', {'fields': ('is_active', 'is_superuser', 'is_staff')}),
    )
    add_fieldsets = (
        (None, {
            'classes': ('wide',),
            'fields': ('username', 'email', 'password1', 'password2', 'is_stuff', 'is_superuser')
        })
    )
 
    search_fields = ('username', 'email')
    ordering = ('email',)
    filter_horizontal = ('groups', 'user_permissions')
 
admin.site.register(AuthUser, AuthUserAdmin)
при запуске сервера или syncdb вы дает ошибку:
Valueerror: too many values to unpack (expected 2)
Миниатюры
Кастомная модель пользователя  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.10.2015, 18:48
Ответы с готовыми решениями:

Модель пользователя
Создаю приложение на джанго. Использую стандартную модель авторизации. НО: в стандартной модели пользователя весьма скудный список...

Django кастомная модель пользователя
Добрый день. Создал свою модель пользователя. Настроил админку. Все работает кроме 1) кнопки "Добавить пользователя" (в веб...

Кастомная модель, не редактируется колонка
Добрый день, делаю класс EditableSqlModel от SqlQueryModel , создал делегат, котоырй заполняет колонку чекбоксами, делегат отлично работает...

1
0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 132
21.10.2015, 11:52  [ТС]
РЕШЕНО.
ответ:
AUTH_USER_MODEL = ‘app.models.AuthUser’
меняем в сеттингс на
AUTH_USER_MODEL = ‘app.AuthUser’

Добавлено через 1 час 38 минут
почти добил.. осталась последняя проблема. В web администраторе не могу добавить нового пользователя.. при нажатии Добавить выдает ошибку:
TyprError: 'NoneType' object is not iterable
не пойму вроде в class AuthUserCreationForm(UserCreationForm) описано все верно... изменять дает, а добавлять нет..
в shell`e пользователей добавляет и отображает в веб админке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2015, 11:52
Помогаю со студенческими работами здесь

Модель пользователя
Здравствуйте, с ООП знаком примерно только в теории и то не очень. Если как создать обычную модель пользователя я ещё понимаю, то вот как...

Модель пользователя- приложение для windows
Здравствуйте!!!!мне нужно создать приложение для windows, которое будет моделировать пользователя, т.е показывать что делал пользователь на...

Математическая модель с дословным описанием для пользователя
Мне нужно полное описание указаной M:=exp(ln(m)*n). Это возведение в степень. Нужно описать как её получили, как она решаеться( вообщем...

Кастомная клавиатура
Доброго времени суток!Как сделать кастомную клавиатуру в собственном приложении?Весь Интернет обыскал,но не нашёл нормального ответа!Может...

Кастомная авторизация
В общем зачем мне это надо, ответ прост - начальство как всегда самое умное... Так вот в общем-то цель - запуск компонента/модуля сразу-же...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru