Данный урок написан на базе рекомендаций документации Django по добавлению новых полей к модели пользователя.
1. Создадим новое приложение:
2. Создадим модель Профиль Пользователя UserProfile, в которой добавляются новые поля к имеющейся в Django модели User. Редактируем файл userprofile/models.py:
3. Подключим наше приложение в проект, отредактировав settings.py:
4. Создаем таблицы для нашего приложения, выполнив в консоли команду:
5. Для того, чтобы поле появилось в админке, отредактируем userprofile/admin.py:
6. Перейдите в админке в раздел Пользователи, чтобы увидеть поле "Изображение"
7. Обратиться к добавленному свойству модели можно так:
1. Создадим новое приложение:
manage.py startapp userprofile
2. Создадим модель Профиль Пользователя UserProfile, в которой добавляются новые поля к имеющейся в Django модели User. Редактируем файл userprofile/models.py:
# -*- coding:utf-8 -*- from django.db import models from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(User) avatar = models.ImageField(upload_to='images/users', verbose_name='Изображение') def __unicode__(self): return self.user class Meta: verbose_name = 'Профиль' verbose_name_plural = 'Профили'
3. Подключим наше приложение в проект, отредактировав settings.py:
INSTALLED_APPS = ( # ... 'userprofile', )
4. Создаем таблицы для нашего приложения, выполнив в консоли команду:
manage.py syncdb
5. Для того, чтобы поле появилось в админке, отредактируем userprofile/admin.py:
# -*- coding:utf-8 -*- from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.models import User from .models import UserProfile class UserInline(admin.StackedInline): model = UserProfile can_delete = False verbose_name_plural = 'Доп. информация' # Определяем новый класс настроек для модели User class UserAdmin(UserAdmin): inlines = (UserInline, ) # Перерегистрируем модель User admin.site.unregister(User) admin.site.register(User, UserAdmin)
6. Перейдите в админке в раздел Пользователи, чтобы увидеть поле "Изображение"
7. Обратиться к добавленному свойству модели можно так:
>>> u = User.objects.get(username='johny') >>> johny_avatar = u.userprofile.avatar
Комментариев нет:
Отправить комментарий