django 기본 user에 원하는 필드 추가하기
OneToOneField 를 이용한 간단한 구현

by saintdragon2


Posted on Dec. 8, 2015, 10:29 a.m.



본 문서는 우분투 운영체제를 기반으로 기술되었으며, python 3.4.3버전을 사용하고 있다. 이 문서는 docs.djangoproject.com의 해당 내용을 요약발췌하여 국문화 한 것임을 알려둔다.

virtualenv venv
source venv/bin/activate
pip install django

먼저 가상환경을 만들어 준다. pip install로 django를 설치하니 1.9버전이 설치된다.

django-admin startproject myproject .
django-admin startapp app1

myproject라는 이름으로 프로젝트를 생성한다. 여기서 .을 찍어주는 이유는 현재 폴더에 프로젝트를 만들기 위함이다. 해보면 알겠지만 점을 안 찍으면 myproject폴더 안에 또 myproject폴더가 생기고 여튼 내 취향은 아니다.

app1.models.py를 아래와 같이 수정한다.

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class Employee(models.Model):
    user = models.OneToOneField(User)
    department = models.CharField(max_length=100)

myproject/settings.pyapp1을 추가하자.

[...]
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app1',
]
[...]

새로운 모델을 만들었으니 migration을 해야지.

> python manage.py makemigrations
> python manage.py migrate

superuser를 만들어야 한다. 아래와 같이 입력하면 사용자명과 이메일, 비밀번호를 넣으라는 메세지가 나온다. 차례로 입력하자.

> python manage.py createsuperuser

admin페이지에서 새로 변경한 Employee가 보이게 하려면 아래와 같이 app1.admin.py를 수정한다.

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

from my_user_profile_app.models import Employee

# Define an inline admin descriptor for Employee model
# which acts a bit like a singleton
class EmployeeInline(admin.StackedInline):
    model = Employee
    can_delete = False
    verbose_name_plural = 'employee'

# Define a new User admin
class UserAdmin(UserAdmin):
    inlines = (EmployeeInline, )

# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

2 comments Comments


saintdragon2 Dec. 31, 2015, 1:56 a.m.

새로 생성한 User가 Customize한 user와 연결하는 부분을 아직 기술하지 않았는데 곧 해야겠다.


SungYong Dec. 31, 2015, 2:05 a.m.

댓글 테스트


Blog Search

Blog Categories

Side Widget Well

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Inventore, perspiciatis adipisci accusamus laudantium odit aliquam repellat tempore quos aspernatur vero.