この記事は、Excel、csv、Json、その他の形式のファイルをインポートし、バックグラウンド データベースを更新するために Django に付属する管理者のバックグラウンドに基づいています。
中心となるのはdjango-import-export
モジュールの導入です。
1. テストフェーズのデータ準備:
まずアプリを作成しましょう: app01
python manage.py startapp app01
次に、app01 フォルダーの下の models.py に次のモデル データを書き込みます。
# app01/models.py
class Author(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Category(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Book(models.Model):
name = models.CharField('Book name', max_length=100)
author = models.ForeignKey(Author, blank=True, null=True,on_delete=models.CASCADE)
author_email = models.EmailField('Author email', max_length=75, blank=True)
imported = models.BooleanField(default=False)
published = models.DateField('Published', blank=True, null=True)
price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True)
categories = models.ManyToManyField(Category, blank=True)
def __str__(self):
return self.name
2. インストールdjango-import-export
清華ミラーを指定するとはるかに高速になります
pip install django-import-export -i https://pypi.tuna.tsinghua.edu.cn/simple
3.settings.py
設定項目の変更と追加
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
'import_export',
]
# django-import-export配置
IMPORT_EXPORT_USE_TRANSACTIONS = True # 默认值为False。它确定库是否会在数据导入中使用数据库事务,以确保安全。
2 つの変更:
- import_export,app01を登録する
- 構成項目を追加: IMPORT_EXPORT_USE_TRANSACTIONS = True
4. 管理者が表示およびエクスポートした情報を追加します
最終的に を使用してimport_export
インポートおよびエクスポート機能を実装するには、admin.py
でインポートおよびエクスポートする必要があるモデルおよび関連フィールド情報を指定する必要があります。
例えば:
#app01/admin.py
from import_export import resources
from .models import Book
from import_export.admin import ImportExportModelAdmin
class BookResource(resources.ModelResource):
class Meta:
model = Book
class BookAdmin(ImportExportModelAdmin):
resource_classes = [BookResource]
admin.site.register(Book, BookAdmin)
上記のコードは次のように実装されます。
class BookResource(resources.ModelResource):
モデルのインポートとエクスポートに関連するフィールドとメソッドを指定します (ここでは単に: を渡し、model = Book
インポートとエクスポートにすべてのフィールドが含まれることを指定します)。
class BookAdmin(ImportExportModelAdmin):
ImportExportModelAdmin
統合の実装から継承されますadmin
。
admin.site.register(Book, BookAdmin)
: モデルを Django バックエンドに登録します。
5. テストデモンストレーション
管理者のホームページ:
ブックモデル管理ページに、インポートボタンとエクスポートボタンが表示されます。
ファイルを準備してデータをインポートします (ファイルヘッダーにはフィールド名に従って名前を付ける必要があります。そうしないと、インポートされたデータは認識されません)
6. 結論
上記の機能を手早く実装するために、resources
とadmin
クラスをファイルに記述しましたが、実際のプロジェクトではResourceを定義するファイルをすべて独立したファイルに記述しresources.py
、使用時にインポートすることができます。
class BookResource(resources.ModelResource):
class Meta:
model = Book