Данный урок написан на базе рекомендаций документации 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

Комментариев нет:
Отправить комментарий