Web Development/Django

6. User Application 2

tongnamuu 2020. 1. 11. 02:00

models.py에서 새로운 필드를 추가하고 싶다면

와 같이 작성하면 되는데 사이트로 이동해보면

라는 에러가 뜨게 될 것이다. 즉 database에는 아직 없다는 것이다.

python manage.py makemigrations

를 실행해주자.(default 값을 설정해주라고 뜰텐데 default를 설정하고 실행해줍시다)

이후 python manage.py migrate

python manage.py runserver

를 실행하고 웹에서 Add user를 해보면

NewField가 생성되어있다.

만약에 ImageField를 추가하고 싶다면

pipenv install Pillow

를 실행하면 된다.

CharField는 한줄, 

TextField는 여러 줄이 가능하다.

 

LANGUAGE_ENGLISH = "en"

LANGUAGE_KOREAN = "kr"

LANGUAGE_CHOICES = (

        (LANGUAGE_ENGLISH, "English"),

        (LANGUAGE_KOREAN, "Korean"),

)

language = models.CharField(choices=LANGUAGE_CHOICES, max_length=2null=True)

 

와 같이 CharField에서는 선택할 수 있게 만들 수 있다.

admin.py를 살펴보면

decorator를 사용할 수도 있고

처럼 사용할 수도 있다.

 

user를 살펴보면

생성한 superuser하나만 나오는 것을 알 수 있다

이제 CustomUserAdmin에 코드를 추가해보자.

를 하게되면 (model에 gender 과 birthdate를 추가해 두었습니다)

이렇게 나오던 페이지가

로 나오게 되며 list_filter 도 추가해주면

페이지가 아래와 같이 나타나게 된다.

 

이제는 장고에서 제공하는 admin 패널을 가져와서 수정하기 위해 admin.py를 수정해 주자.

장고에서 기본적으로 제공하는 admin패널은 하나의 큰 Fieldset에 하위항목이 있게 구성되어 있다.

문제는 우리가 추가해준 항목들이 보이지 않는다는 점이다.

 

 

를 해주면 해결된다.

기존의 fieldset에 항목들이 추가되어있음을 알 수 있다.

 

여기까지 하게되면 Admin panel을 custom해서 사용할 수 있게 될 것이다.