[PYTHON] Gérer les fichiers csv avec Django (django-import-export)

Lorsque j'ai créé une application pour gérer les dépenses du restaurant Puisqu'il était nécessaire d'importer des données passées à la fois, j'ai trouvé un plug-in utile. Je pense qu'il peut être utilisé lors de la gestion d'une grande quantité de données telles que les données sur le cours des actions à l'avenir.

Environnement de développement

Exemple de modèle

models.py


from django.db import models
from datetime import datetime


class Category(models.Model):
    category_name = models.CharField(max_length=255,unique=True)


class Shop(models.Model):
    shop_name = models.CharField(max_length=255,unique=True)
    flag = models.IntegerField(verbose_name="drapeau")
    category = models.ForeignKey(Category, on_delete = models.PROTECT, verbose_name="Catégorie")


class Cost(models.Model):
    date = models.DateField(verbose_name="Date",default=datetime.now)
    shop = models.ForeignKey(Shop, on_delete = models.PROTECT, verbose_name="Nom du magasin")
    price = models.IntegerField(verbose_name="Somme d'argent", help_text="Entrée demi-largeur")
    memo = models.CharField(verbose_name="Remarques", max_length=500, blank=True)
    created_at = models.DateTimeField(verbose_name='Date d'enregistrement', auto_now_add=True)
    updated_at = models.DateTimeField(verbose_name='Mettre à jour la date et l'heure', auto_now=True)

Afin de gérer le coût des restaurants, il existe trois modèles tels que la catégorie, le fournisseur, le montant d'argent, etc. Le reste est comme dans models.py.

Installation de django-import-export

$ pipenv install django-import-export

Ce qui précède concerne l'utilisation de pipenv. Si vous installez avec pip, vous pouvez le faire avec $ pip install django-import-export.

Ajout de «import_export» à settings.py

settings.py


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #···réduction
    'import_export', #Ajouter ici
]

Ajout de ʻimport_export` à INSTALLED_APPS dans settings.py sous le projet

Ajouter des paramètres à admin.py

admin.py


from django.contrib import admin
from import_export import resources
from import_export.admin import ImportExportModelAdmin
from .models import Category, Shop, Cost

#Créer une classe qui hérite de ModelResource à intégrer avec le modèle Category
class CategoryResource(resources.ModelResource):
    class Meta:
        model = Category

#Créer une classe qui hérite de ModelResource à intégrer au modèle Shop
class ShopResource(resources.ModelResource):
    class Meta:
        model = Shop

#Créer une classe qui hérite de ModelResource à intégrer au modèle Cost
class CostResource(resources.ModelResource):
    class Meta:
        model = Cost


@admin.register(Category)
#Créer une classe d'administration qui hérite de ImportExportModelAdmin
class CategoryAdmin(ImportExportModelAdmin):
    ordering = ['id']
    list_display=('id', 'category_name')

    # resource_Définir la classe sur une classe qui hérite de ModelResource
    resource_class = CategoryResource


@admin.register(Shop)
#Créer une classe d'administration qui hérite de ImportExportModelAdmin
class ShopAdmin(ImportExportModelAdmin):
    ordering = ['id']
    list_display=('id', 'shop_name', 'flag', 'category')

    # resource_Définir la classe sur une classe qui hérite de ModelResource
    resource_class = ShopResource


@admin.register(Cost)
#Créer une classe d'administration qui hérite de ImportExportModelAdmin
class CostAdmin(ImportExportModelAdmin):
    ordering = ['id']
    list_display=('id', 'date', 'shop', 'price', 'memo')

    # resource_Définir la classe sur une classe qui hérite de ModelResource
    resource_class = CostResource

Une classe qui hérite de ModelResource et ʻCreate an admin classqui hérite de ImportExportModelAdmin et Écrivez simplement une classe qui hérite deModelResource dans resource_class`. Pour rendre la classe de ressources définie disponible sur l'écran de gestion Cela peut être plus facile à comprendre si vous pensez qu'il est lié à admin.py.

Accédez à n'importe quelle URL / admin

ss.png Les boutons d'importation et d'exportation sont affichés comme indiqué dans l'image. Vous pouvez réellement importer et exporter avec cela. ss 1.png

À propos, en plus de csv, il prend également en charge xls, xlsx, tsv, json et yaml. Étonnamment pratique. Cependant, j'ai l'impression que la vitesse de traitement est un peu lente lorsqu'il y a beaucoup de données. .. ..

Site référencé

https://qiita.com/kira_puka/items/14a1a604a428a4c68884 https://django-import-export.readthedocs.io/en/stable/index.html

Recommended Posts

Gérer les fichiers csv avec Django (django-import-export)
Gérer les fichiers Excel CSV avec Python
Télécharger des fichiers avec Django
Travailler avec des fichiers JSON dans Matlab
Gestion des fichiers statiques lors du déploiement en production avec Django
Gérer les fichiers de configuration Django avec Python-decouple
Excel, import / export csv avec Django
Utilisation de plusieurs projets Django dans Apache (WSGIDaemonProcess)
Lire et écrire des fichiers csv avec numpy
Internationalisation avec Django
CRUD avec Django
Essayez d'utiliser django-import-export pour ajouter des données csv à django
Gérer les fichiers zip avec des noms de fichiers japonais dans Python 3
Configurer un module avec plusieurs fichiers dans Django
Authentifier Google avec Django
Django 1.11 a démarré avec Python3.6
Résumé du développement avec Django
Sortie PDF avec Django
Sortie Markdown avec Django
Utiliser Gentelella avec Django
Twitter OAuth avec Django
Premiers pas avec Django 1
Gérez Excel avec python
Envoyer des e-mails avec Django
Manipuler rabbimq avec python
Téléchargement de fichiers avec django
Utilisez LESS avec Django
La mutualisation mécanise avec Django
Utiliser MySQL avec Django
[Python] Lecture de fichiers CSV
Django à partir d'aujourd'hui
Supprimer les en-têtes de fichiers CSV à plusieurs formats avec python
Premiers pas avec Django 2
Créer un babillard Heroku, Flask, Python, Nyanko avec "fichier csv"
Aussi, quand je regarderai en arrière plus, j'écrirai d'une manière facile à comprendre quelle procédure a été implémentée....
Lire csv avec des pandas python
Lancez-vous avec Django! ~ Tutoriel ⑤ ~
Créer une API avec Django
Extraire les données Twitter avec CSV
Faites Django avec CodeStar (Python3.8, Django2.1.15)
Déployer Django sans serveur avec Lambda
Python3 + Django ~ Mac ~ avec Apache
Premiers pas avec Python Django (1)
Créer une page d'accueil avec django
Lire et écrire des fichiers csv
Tri des fichiers image avec Python (2)
Lancez-vous avec Django! ~ Tutoriel ④ ~
Trier de gros fichiers avec python
Tri des fichiers image avec Python (3)
Premiers pas avec Python Django (4)
Créer une application Web avec Django
Premiers pas avec Python Django (3)
Combinez Fast API avec Django ORM
[Astuces] Gérez Athena avec Python
Lancez-vous avec Django! ~ Tutoriel ⑥ ~
Tri des fichiers image avec Python
Utilisez Django pour enregistrer les données de tweet
Transférer des fichiers avec Teraterm [Note]
Intégrez des fichiers PDF avec Python