본문 바로가기

Project/ToyProject

[Rmanager] Backoffice customizing

반응형

오늘 공부 내용도 백오피스를 개발자 입맛에 따라 커스터마이징 하는 방법을 배웠다.

baton테마를 사용중인데, 테마에 기본 적용된 것들을 하나씩 바꿔나가고 있다.

해당 앱에 들어갈 때 위 사진처럼 '주문 목록'으로 변경하는 방법은 (기존에는 테마에 적용된 영문자가 포함되어 있었음)

changelist_view 함수를 사용하여 title을 변경하는 방법인데, self 코드로 내가 원하는 것을 변경할 수 있었고,

후에는 기존에 있었던 인자값을 반환하는 코드 방식이다.

 

 

Previous imageNext image

 

관리자 페이지에서 메뉴 목록을 원하는 값으로 바꾸는 방법은

settings.py에서 기존에 등록한 앱을 config를 추가하고, 각 앱마다 apps.py에 있는 각각의 클래스에 verbose_name을 지정하는 것이다.

상세보기 페이지에서는 변경하는 방법이 기존 것보다 인자 값이 조금 더 필요하다 / object_id=None,. form_url='' (상세보기는 각 상품마다 id 값이 들어오기 때문!)

그리고 기존 changelist_view가 아닌 changeform_view로 작성해야 한다.

그리고 f스트링을 사용하여 각각의 상품명을 나타내 주고 수정하기로 context 변경하였다.

마찬가지로 super함수로 원래 있던 함수들을 전부 다 호출함!

그리고 보다 편하게 보기 위해 settings.py에서 언어와 시간대를 변경하였다.

기존 주문 앱에서는 장고에서 제공하는 삭제 액션만 가능했었는데,

환불기능을 추가하기 위해서 order/admin.py에 위 사진처럼 함수를 추가하고 기존 클래스 안에 actions로 기능을 추가하였다.

하지만 이렇게만 작성하면, 환불을 했을 때 환불한 만큼 재고가 늘어나지 않는 문제점이 발생한다.

!= 를 사용할 수 없기 때문에 from django.db.models 에 Q를 임포트 해서 사용한다.

qs라는 인자를 만들어서 상태가 환불이 아닌 것만 필터를 통해 가져오고,

반복문을 사용하여 qs안에서 환불이 생길 때 환불한 값만큼만 재고가 늘어나게 지정하였다

하지만 이렇게 지정하면, 여러 모델이 한 번에 변경할 경우가 생기기 때문에

transaction을 임포트 해서 사용

가장 중요한 것은 transaction안에 조회부터 들어가야 한다.

그리고 history를 커스터마이징 하는 방법으로는

from django.contrib.admin.models import LogEntry, CHANGE

from django.contrib.contenttypes.models import ContentType

임포트 한 후에

ct라는 인자 값을 contenttype에 객체들을 쿼리 셋으로 받아오게 한 후에

logentry를 사용하여 pk값을 가져오고 해당 액션에 맞게 커스터마이징을 한 결과

원하는 그림이 구현된 걸 확인할 수 있었다.

history를 활성화시키면 모든 액션에 대한 추적이 가능해 조금 더 시스템화 된다.

원래는 나머지 앱들에 대한 액션도 추가하지만, 배포할 프로젝트는 아니기에 패스!

반응형

'Project > ToyProject' 카테고리의 다른 글

[Rmanager] app - customPage  (0) 2021.07.31
[Rmanager] Backoffice - button  (0) 2021.07.31
[Rmanager] Backoffice - list_display/baton tema  (0) 2021.07.31
[Rmanager] Decorator  (0) 2021.07.31
[Rmanager] generic view  (0) 2021.07.31