STACKBASE

[Django] admin을 통한 데이터 관리 본문

프로그래밍/Django

[Django] admin을 통한 데이터 관리

잡뿌 2022. 2. 17. 22:30
반응형

프로젝트 urls.py

장고 프로젝트  urls.py에 보면, admin/ 으로 접속 url이 urlpatterns에 추가 되어 있다. 

장고 app의 models에 있는 클래스를 장고app의 admin.py에 등록을 해주면 

admin/페이지에서 조회/추가/수정/삭제 할 수 있도록 웹UI를 제공해 준다.

 

1. 등록 방법 3가지

  • 1번째
admin.site.register(ClassName)
# 기본 ModelAdmin으로 동작
  • 2번째
class ExampleAdmin(admin.ModelAdmin):
	pass
    
admin.site.register(Example, ExampleAdmin)
# 지정한 ModelAdmin으로 동작
  • 3번째
@admin.register(Example)
class ExampleAdmin(admin.ModelAdmin):
	pass
    
    
# 데코레이터를 이용한 방법

2. admin 커스터 마이징

  • 1번 : 모델 리스트에 출력할 컬럼 지정
  • 2번 : detail 링크를 걸 속성 지정
  • 3번 : 검색 UI 추가 
  • 4번 : 공개 여부 컬럼 지정
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
	#1번
    list_display = ['id', 'message', 'created_at', 'updated_at', 'message_length', 'is_public']
    #2번
    list_display_links = ['message', 'created_at']
    #3번
    search_fields = ["message"]
    #4번
    list_filter = ['is_public']

3. App model 클래스 문자열 표현

    def __str__(self):
       return f'Custom Post object ({self.id})'
    # 인자로 self만 넘길 수 있다.
    
    def message_length(self):
        return len(self.message)
    message_length.short_description = "메세지 글자 수"
    
    
    #### admin에서 표현 할 경우
    def message_length(self, post):
        return len(post.message)
  • 객체에 대한 문자열 표현이 필요할 경우 __str__로 구현
  • @property 장식자를 통해 함수로 속성을 정의 할 수 있다. 
  • message_length 함수와 같은 경우 models.py와 admin.py 어디서 구현할지 선택이 가능하다.
반응형

'프로그래밍 > Django' 카테고리의 다른 글

[Django] 장고 쉘!  (0) 2022.02.21
[Django] 장고 소개  (0) 2022.02.16
[Django] debug toolbar 설치  (0) 2022.01.28
[Django] debug toolbar 오류 Fix  (0) 2022.01.28