jc.jang

15강 User Admin 커스텀하기 본문

Django/Django - 인증편

15강 User Admin 커스텀하기

jangstory 2019. 9. 8. 23:16

주제

  • User Admin을 커스텀한다.
  • 자주사용하는 list_display, list_filter, actions 필드를 재정의한다.

노트

  • 지난 포스팅 14강 커스텀 User Model 만들기 중 세번째 방법으로 AbstractUser 모델 상속을 이용해 성별 필드를 추가했다.
  • 지금은 장고의 기본 데이터베이스 엔진인 sqlite3를 사용하고 있어서 에러가 발생하지 않지만, 다른 엔진이라면 성별의 초기값이 없어서 에러가 발생한다.
  • 따라서 다음과 같이 UserManager 클래스를 재정의해야한다.

 

  • accounts/models.py
class UserManager(AuthUserManager):
    def create_superuser(self, username, email, password, **extra_fields):
        extra_fields.setdefault('sex', 'm')
        return super().create_superuser(username, email, password, **extra_fields)
  • extra_fields에서 성별의 기본값을 설정해준다.

 

  • 이제 기본적인 admin 페이지를 커스텀해보자.
  • accounts/admin.py
@admin.register(User)
class UserAdmin(AuthUserAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
    list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups', UserDateJoinedFilter, 'sex')
    actions = ['send_marketing_email']

    def send_marketing_email(self, request, queryset):
        for user in queryset:
            pass
        self.message_user(request, 'hello world')
  • list_display: admin 페이지에 표시되는 레코드들의 필드 지정
    • 표시하고자하는 필드를 튜플에 할당
  • list_filter: admin 페이지 오른쪽에 표시되는 필터 활성화
    • 표시하고자하는 필터를 튜플에 할당
    • UserDateJoinedFilter처럼 Filter도 커스텀 할 수있다.
    • 필터를 커스텀하는 방법은?
      • 공식문서의 예시 참고
      • class를 생성하고 title, parameter_name 속성 값 정의 lookups, queryset 메소드 정의
  • actions: 사용할 수 있는 액션 목록
    • 액션으로 사용할 메소드를 설정
    • 공식문서의 예시 참고
    • 메소드를 만들고 actions 필드에 딕셔너리로 할당

질문

  • 강의 들으면서 궁금한게 있으면 구글링하는데, 장고 공식문서가 정말 잘 정리되어있다.
  • 공식 문서만 날잡고 읽어도 좋을 것 같다.

요약

  • User Admin을 커스텀 할 수있다.
  • 장고의 공식문서를 읽고 사용할 수 있다.

날짜

  • 오후 11시, 20190908

 

Comments