0 / 0 / 0
Регистрация: 12.05.2015
Сообщений: 132

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

20.10.2015, 18:48. Показов 824. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru