반응형
장고 프로젝트 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 |