George
6 min readAug 13, 2018

[Django] django-import-export 好用模組

目標、說明:

1) 學習如何建置django-import-export

2) 由於已經有資料被建置,但是礙於我們要把資料匯入/匯出資料,就需要重新寫,非常麻煩。透過此應用程式,可以輕易將資料做匯出匯入的動作外,也可以轉換成其他資料格式。

已經有資料(excel, csv, …, etc) — -匯入 — -> 資料庫
資料庫 — -匯出 — -> 資料(excel, csv, …, etc)

  1. 安裝Python 3.x & Django 1.11 (滿多文章都有講解,故略)
  2. 建立Django project & Django app
> django-admin startproject [your_project_name]> cd [your_project_name]
> python manage.py startapp [your_app_name]

3. 安裝django-import-export

> pip install django-import-export

4. 新增django-import-export到setting.py

INSTALLED_APPS = [
'import_export',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

5. 新增IMPORT_EXPORT_USE_TRANSACTIONS = True 到 settings.py

6. 在django app下,新增resources.py

from import_export import resources
from .models import Person

class PersonResource(resources.ModelResource):
class Meta:
model = Person

7. models.py

from django.db import models

class Person(models.Model):
schoolClass = models.CharField(max_length=20) # 班級
className = models.CharField(max_length=20) # 班級名稱
schoolClassChinese = models.CharField(max_length=20) # 班級名稱1
seatNumber = models.CharField(max_length=20) # 座號
studentID = models.CharField(max_length=20) # 學號
name = models.CharField(max_length=30) # 姓名
identityCard = models.CharField(max_length=30) # 身分證
sex = models.CharField(max_length=2) # 性別
birth_date = models.CharField(max_length=20) # 出生日期

birth_date 應該要使用 models.DateField() 來處理,但是由於我的狀況是資料使用民國,會讓資料錯誤。

方法1: 改變 birth_date 資料型態 DateField() 改為 CharField()
方法2: 寫一個小程式,直接執行改民國變西元

8. admin.py

from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from .models import Person

@admin.register(Person)
class PersonAdmin(ImportExportModelAdmin):
list_display = ('id', 'schoolClass', 'className', 'schoolClassChinese', 'seatNumber', 'studentID', 'name', 'identityCard', 'sex', 'birth_date')

9. 對資料庫進行 makemigrations, migrate

> python manage.py makemigrations
> python manage.py migrate

10. 建立admin管理者帳號密碼

> python manage.py createsuperuser
> admin (帳號)
> xxxxx@gmail.com (e-mail)
> passwords (密碼)
> confirm passwords (密碼確認)

11. 登入htttp://localhost:8000/admin

12. 點選Persons,可觀看主要介面,可import/export

13. 點選import/export

14. 你可以開始閱讀進階其他功能

參考資料:

https://django-import-export.readthedocs.io/en/latest/index.html

如果你覺得文章很棒或有幫助到您,不妨幫我點個拍手吧! 謝謝…

No responses yet