[Django] django-import-export 好用模組
目標、說明:
1) 學習如何建置django-import-export
2) 由於已經有資料被建置,但是礙於我們要把資料匯入/匯出資料,就需要重新寫,非常麻煩。透過此應用程式,可以輕易將資料做匯出匯入的動作外,也可以轉換成其他資料格式。
已經有資料(excel, csv, …, etc) — -匯入 — -> 資料庫
資料庫 — -匯出 — -> 資料(excel, csv, …, etc)
- 安裝Python 3.x & Django 1.11 (滿多文章都有講解,故略)
- 建立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
如果你覺得文章很棒或有幫助到您,不妨幫我點個拍手吧! 謝謝…