Django の管理者バックグラウンドを使用して Excel/CSV インポートを実装し、データベースを更新し、データを Excel/CSV にエクスポートします

この記事は、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. 結論

上記の機能を手早く実装するために、resourcesadminクラスをファイルに記述しましたが、実際のプロジェクトではResourceを定義するファイルをすべて独立したファイルに記述しresources.py、使用時にインポートすることができます。

class BookResource(resources.ModelResource):
    class Meta:
        model = Book

おすすめ

転載: blog.csdn.net/agelee/article/details/127613248