[PYTHON] Essayez d'utiliser django-import-export pour ajouter des données csv à django

introduction

Cet article utilise la bibliothèque django-import-export pour lire le fichier csv créé par vous-même dans django. django-import-export est une bibliothèque qui vous permet d'importer et d'exporter des fichiers csv depuis l'écran de gestion. En utilisant cela, nous allons créer des modèles tels que Book et Publisher cette fois, et même lire les fichiers csv associés (un-à-un ou un-à-un). De plus, je voudrais décrire les impressions que j'ai utilisées.

Site officiel: django-import-export

Personne cible

・ Les personnes qui souhaitent enregistrer les données de leur propre fichier csv dans le modèle django ・ Les personnes qui ont essayé d'utiliser django-import-export mais qui n'ont pas fonctionné ・ Les personnes qui connaissent le contenu un-à-un et plusieurs-à-un de la base de données

environnement

Veuillez installer les packages suivants.

pip install django django-import-export

table des matières

  1. Créez un projet
  2. Créer une application
  3. Créez un fichier csv
  4. Essayez d'importer

Création de projet

Configuration de base

django-admin startproject config .
python manage.py startapp Book

Étant donné que le projet et le modèle peuvent être créés avec la commande ci-dessus, ajoutez des applications et des modules supplémentaires dans settings.py.

# config/settings.py

INSTALLED_APPS = [
    "import_export",#django-import-Requis pour utiliser l'exportation
    "Book",#Application créée cette fois
]

App

Cette fois, nous créerons trois modèles. Décrivez comme suit dans les modèles du livre créés précédemment.

#Book/models.py
from django.db import models
class Publisher(models.Model):
    name = models.CharField("Nom de l'éditeur",max_length=100,help_text="l'éditeur")

class Book(models.Model):
    title = models.CharField("Titre",max_length=100,help_text="本のTitre")
    publisher = models.ForeignKey(Publisher,on_delete=models.CASCADE)

class BookPrice(models.Model):
    book = models.OneToOneField(Book,on_delete=models.CASCADE)
    price = models.IntegerField("Liste des prix",help_text="本のListe des prix")

Le contenu du modèle est le suivant. ・ Book a de nombreuses relations avec l'éditeur ・ BookPrice et Book ont une relation individuelle

Le tour de django-import-export

Pour importer des fichiers csv dans ces modèles, définissez-les à partir de l'écran de gestion. C'est là qu'intervient django-import-export. La méthode concrète est complétée en jouant simplement avec admin.

#Book/admin.py
from django.contrib import admin
from import_export import resources
from import_export.admin import ImportMixin
from .models import Book,BookPrice,Publisher

class PublisherAdmin(ImportMixin,admin.ModelAdmin):
    class PublisherResource(resources.ModelResource):
        class Meta:
            model = Publisher
            fields = ("id","name",)
    resource_class = PublisherResource

class BookAdmin(ImportMixin,admin.ModelAdmin):
    class BookResource(resources.ModelResource):
        class Meta:
            model = Book
            fields = ("id","title","publisher",)
    resource_class = BookResource


class BookPriceAdmin(ImportMixin,admin.ModelAdmin):
    class BookPriceResource(resources.ModelResource):
        class Meta:
            model = BookPrice
            fields = ("id","book","price",)
    resource_class = BookPriceResource



admin.site.register(Publisher,PublisherAdmin)
admin.site.register(Book,BookAdmin)
admin.site.register(BookPrice,BookPriceAdmin)

** Définissez les détails du fichier csv à importer avec Resource. Décrivez la colonne à lire dans les champs. En plus des champs, il y a import_id_fields, etc., et vous pouvez spécifier l'id sous forme de commande. En outre, vous pouvez modifier le format qui n'accepte que csv et décider s'il faut importer même si les données changent.

création de fichier csv

À partir de là, créez trois fichiers csv dans Excel. Lorsque vous pointez vers un autre modèle comme indiqué ci-dessous, il est possible de créer un lien en écrivant le numéro d'identification à lier. Par exemple, «Kimi no Koe» et «Kimi no Oto» de Book font référence à des objets de l'éditeur Nakagawa Bunko. BookPrice's Book a une relation un-à-un, donc BookPrice et book ont le même numéro d'identification.

Modèle: Publisher

スクリーンショット 2020-04-24 18.10.46.png

Modèle: Book

スクリーンショット 2020-04-24 18.27.56.png

Modèle: BookPrice

スクリーンショット 2020-04-24 18.41.27.png

Essayez d'importer

python manage.py createsuperuser #On m'a beaucoup demandé, mais comme c'est écrit
python manage.py runserver

Si vous allez sur l'écran de gestion de django, vous pouvez voir les trois modèles créés précédemment sur l'écran de gestion. Si vous cliquez sur Publisher à cet égard, l'écran suivant s'affiche. スクリーンショット 2020-04-24 18.48.40.png IMPORT est affiché dans le coin supérieur droit de cet écran, alors importez d'ici. Ensuite, le modèle que vous avez créé sera enregistré. Il est également lié au modèle, veuillez donc le vérifier.

À la fin

Dans cet article, j'ai utilisé django-import-export pour enregistrer les données sur le modèle django. Plus précisément, nous avons créé trois modèles et montré que chacun a une relation correspondante avec un autre modèle, mais la relation de données peut être maintenue en spécifiant leurs identifiants. Ensuite, si j'ai une chance, j'aimerais essayer de créer un modèle plusieurs-à-plusieurs.

Recommended Posts

Essayez d'utiliser django-import-export pour ajouter des données csv à django
Essayez d'utiliser Django templates.html
Ajoutez la fonction d'exportation CSV à l'écran de gestion avec django-import-export
(Python) Essayez de développer une application Web en utilisant Django
Comment ajouter de nouvelles données (lignes droites et tracés) à l'aide de matplotlib
Gérer les fichiers csv avec Django (django-import-export)
Essayez d'utiliser pynag pour configurer Nagios
Analyser les données au format CSV à l'aide de SQL
Essayez de mettre des données dans MongoDB
Essayez d'obtenir des statistiques en utilisant e-Stat
[Django] Commande pour générer QuerySet en csv
Développement d'une application WEB avec Django [Ajouter des données depuis l'écran de gestion]
Essayez d'analyser le mahjong familial en ligne à l'aide de Python (PARTIE 1: Prendre des données)
[Django 2.2] Ajouter un nouveau badge aux nouveaux messages avec une date à l'aide d'un filtre de modèle
Essayez d'utiliser la fonction d'intégration de données de scanpy (sc.tl.ingest)
Essayez de détecter les mouvements de fusion en utilisant AnyMotion
Essayez d'utiliser le framework web de Python Django (1) - De l'installation au démarrage du serveur
Essayez d'obtenir l'état de la surface de la route en utilisant de grandes données de gestion de la surface de la route
Essayez d'utiliser Excel en utilisant Python (Xlwings)
Essayez de convertir en données ordonnées avec les pandas
J'ai essayé de créer le téléchargement CSV, le traitement des données, la fonction de téléchargement avec Django
Convertir les données csv, tsv en une matrice avec MovieLens en utilisant python comme exemple
Essayez de créer un site de gestion Todo en utilisant WebSocket avec Django (Swamp Dragon)
Comment créer des exemples de données CSV avec hypothèse
[Introduction au modèle SEIR] Essayez d'ajuster les données COVID-19 ♬
Ajouter dynamiquement des champs aux objets Form avec Django
Essayez d'agréger les données de musique doujin avec des pandas
Essayez d'utiliser Blueprint avec Flask pour séparer les contrôleurs
Je veux visualiser les fichiers csv en utilisant Vega-Lite!
[Django] Comment obtenir des données en spécifiant SQL.
Préparation à l’essai de «Data Science 100 Knock (traitement des données structurées)»
Comment obtenir des données d'article à l'aide de l'API Qiita
Écrire des données CSV sur AWS-S3 avec AWS-Lambda + Python
Essayez de créer un serveur HTTP en utilisant Node.js
Comment rechercher des données HTML à l'aide de Beautiful Soup
Convertir les données au format json en txt (en utilisant yolo)
Ajouter une fonctionnalité pour modifier les informations de quart de jour Django
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Chaque fois que j'essaye de lire un fichier csv en utilisant des pandas, j'obtiens une erreur numpy.
Essayez d'utiliser des géopandas
Essayez d'utiliser Selenium
Essayez d'utiliser scipy
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Créer une application de gestion de partition shogi à l'aide de Django 5 ~ Passer les données de la base de données au modèle ~
Je convertis les données AWS JSON en CSV comme ceci
100 langage traitement knock-92 (utilisant Gensim): application aux données d'analogie
[Python] [Django] Comment utiliser le champ de choix et comment ajouter des options
python débutant essaie d'ajouter une authentification de base à l'administrateur de Django
Essayez d'utiliser les données ouvertes de COVID-19 de Yokohama / Tokyo / Osaka
Enregistrez collectivement des données dans Firestore à l'aide d'un fichier csv en Python
Comment récupérer des données de courses de chevaux à l'aide de pandas read_html
Essayez de créer une API RESTful avec MVC à l'aide de Flask 1.0.2