Home Django admin을 통한 데이터 관리
Post
Cancel

Django admin을 통한 데이터 관리

인프런 파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 보고 정리한 내용입니다.


강의 내용 정리

강의명 : 파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

강의: 장고 admin을 통한 데이터 관리


django admin

django.contrib.admin 앱을 통해서 제공됨

  • 디폴트 경로: /admin/
  • 혹은 django-admin-honeypot앱을 통해 가짜 admin 페이지 노출
    • 동일한 기능 제공. 단 이 방법 사용시 admin을 다른 경로로 변경해두고, /admin/을 honeypot가 mapping 하게 됨. 이 앱에서는 로그인 할 사람의 IP을 기록해두게 됨.

모델 클래스 등록을 통해서 조회/추가/수정/삭제 웹 ui를 제공함

  • 서비스 초기에 데이터베이스 관리도구로 유용
  • 관리도구 만들 시간 줄이고 End-User 서비스에 집중 할 수 있음

내부적으로 django form 적극적으로 사용

model을 만들어도 admin상에서 사용하기 위해서는 따로 등록하는 과정이 필요함!!!

Admin에 Model Class 등록 방법

model 등록은 한번만 됨

이미 등록된 model에 한해서는 unregister해야만 새롭게 등록 가능

등록법 #1

1
admin.site.register(Item) #기본 ModelAdmin으로 동작

아래와 같이 앱 디렉토리의 admin.py파일에 입력해주고 저장한다.

그러면 아래와 같이 /instagram (등록한 앱 URL)로 가면 Model이 뜸

등록법 #2

1
2
3
class ItemAdmin(admin.ModelAdmin):
	pass
admin.site.register(Item,ItemAdmin) #지정한 ModelAdmin으로 동작

등록법 #3

1
2
3
@admin.register(Item)
class ItemAdmin(admin.ModelAdmin):
	pass

/str 표현

JAVA의 toString처럼 파이썬에서도 어떤 객체에 대해서 문자열로 표현해야 하는 경우가 있음

1
2
3
4
5
6
7
8
9
# Create your models here.
class Post(models.Model):
    message = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

		#아래처럼 작성
    def __str__(self):
        return f"Post object ({self.id})" #이 부분은 custom 가능

그럼 Post를 만들 경우 다음과 같이 이름이 지정도미

list display 표현

보여줄 컬럼을 지정할 수 있음

아래와 같이 list_display를 primary key로 지정한다면

1
2
3
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ['pk'] #pk는 primary key에 대한 별칭

아래와 같이 뜸 (primary key인 id가 1이기 때문에 1)

좀 더 explicit하게 표시할 컬럼들을 명시해주었을때의 결과

1
2
3
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ['id','message','created_at','updated_at'] #pk는 primary key에 대한 별칭

list_display 지정된 이름 중에, detail 링크를 걸 속성 리스트

1
2
3
4
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ['id','message','created_at','updated_at'] #pk는 primary key에 대한 별칭
    list_display_links=['messages']

Member Function 추가 (models.py에서)

1
2
3
4
5
6
#instagram/admin.py

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
    list_display = ['id','message','message_length','created_at','updated_at'] #pk는 primary key에 대한 별칭
    list_display_links=['messages']

멤버 function 컬럼 이름 변경

Member Function 추가 (admin.py에서)

Search_fields 속성 정의

admin내 검색 UI를 통해, DB를 통한 where 쿼리 대상 필드 리스트

list_filter 속성 정의

지정 필드값으로 필터링 옵션 제공

This post is licensed under CC BY 4.0 by the author.