본문 바로가기
Project/에어비앤비 (with Django)

[Django] User Admin 패널에 필드 추가하기

by 발담그는블로그 2021. 1. 4.

Admin 패널이란 Admin 페이지에 들어가서 보여지는 패널을 말한다.
Admin 패널에 추가하기 위해선 admin.py models.py 2가지를 수정하면 된다.
models.py에서 class 만들어서 admin.py에서 객체 생성하는 형식이다.

admin.py 파일 수정

admin.py에서 Admin 패널을 수정할 수 있다. 패널에 필드를 추가하려면 model에 필드를 추가한 후, admin파일에서 fieldset을 설정해주어야 한다.
이렇게 하기 이전에 가장 먼저 해야할 일은 admin.py에서 model을 가져오는 일이다. model을 가져오기 위해선 Model을 register을 해주어야 한다. model을 register 해주는 방법은 2가지가 있다.

방법1. Decorator 활용

Decorator란, 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용한다. 

@decorator
def function():
	pass

대상 함수(decorator의 바로 하단에 있는 함수)를 wrapping하고, 이 wrapping된 함수의 앞뒤에 추가 기능을 쉽게 붙일 수 있다. 

기존에 만들었던 Custom Users 폴더에 있는 admin.py 열고 다음과 같이 입력한다.

#admin에 등록하고자 하는 모델 import
from django.contrib import admin	
from . import models

@admin.register(models.User)
class CustomUserAdmin(admin.ModelAdmin):
    pass

 

 

models.py 파일 수정

마찬가지로 Users 폴더에 있는 models.py을 열고 다음과 같이 입력한다.

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

# Create your models here.

# AbstractUser란
class User(AbstractUser):
    bio = models.TextField(default="")

이렇게 추가한다음 migration을 진행한다.

 

Mirgation

python manage.py makemigrations
python manage.py migrate

 

이렇게 모든 과정이 완료되면 admin 패널 사용자에서 다음 필드가 추가된 것을 확인할 수 있다.

반응형