[Django Recipe] django-import-export 관리자페이지 적용.

django-import-export 관리자 페이지 적용하기.

django-import-export는 csv, xlsx 등의 파일을 읽어 데이타베이스에 저장하거나, 데이타베이스의 내용을 csv, xlsx등의 파일로 저장하는 기능을 제공한다.
지원되는 파일 포맷은 tablib 가 지원하는 형식이며, tablib는 Excel, JSON, YAML, HTML, Jira, TSV, ODS, CSV, DBF를 지원한다.

1. 설치

2. 설정

project/settings.py 에 아래 내용 추가

3. 사용 모델은 아래와 같다.
project/app/models.py

4. 관리자페이지에서 사용하기

관리자 페이지에 DevInfo 모델이 표시되도록 클래스를 작성한다.
project/app/admin.py

import-export 적용전 관리자 페이지는 아처럼 보인다.

관리자 페이지에 import-export 적용하기위해 아래 모듈을 import 한다.

project/app/admin.py 에 해당 모듈을 등록

이제, resources.ModelResource 를 상속받는 클래스 DevInfoRecource 를 작성 한다.

dev_cat=field.Field 구문은 category id 대신 category name 으로 import 하기위한 구문이다.
(category는 이전글 django-adminlte3 관련 글을 참고)

Meta 클래스의 exclude 문은 import/export 할때 제외할 필드다. id 는 primary key를 지정하지 않았을때 자동으로 생기는 필드이며, dev_ip 필드는 자동으로 ip 주소로부터 자동으로 채워지는 필드라 import/export에 필요하지 않다.

관리자 페이지에서 보여줄 클래스를 수정한다.

아래 그림처럼 import 버튼이 보인다.

xlsx 포맷으로 import 데이타를 작성한다.

이제, import를 선택하면 아래처럼 import 할 데이타의 field를 보여준다.

import를 성공하면,

이제 데이타가 아래처럼 object로 표시된다.

데이타가 위처럼 object로 표시되면 확인하기 불편하다. 이제, 원하는 필드를 보여주기위해서 클래스에 list_display를 추가하고, 관리자페이지의 검색 기능에 검색할 필드를 search_field로 지정한다.

이제, 데이타가 위에서 object 대신 지정한 필드를 보여준다.

댓글 남기기

Your email address will not be published.

%d 블로거가 이것을 좋아합니다: