[PYTHON] Versuchen Sie, mit django-import-export csv-Daten zu django hinzuzufügen

Einführung

Dieser Artikel verwendet die Django-Import-Export-Bibliothek, um die von Ihnen erstellte CSV-Datei in Django zu lesen. django-import-export ist eine Bibliothek, mit der Sie CSV-Dateien vom Verwaltungsbildschirm importieren und exportieren können. Auf diese Weise erstellen wir dieses Mal ein Modell wie Book, Publisher usw. und lesen sogar die zugehörige CSV-Datei (eins zu eins oder eins zu eins). Außerdem möchte ich die Eindrücke beschreiben, die ich verwendet habe.

Offizielle Website: django-import-export

Zielperson

・ Personen, die die Daten ihrer eigenen CSV-Datei im Django-Modell speichern möchten ・ Leute, die versucht haben, Django-Import-Export zu verwenden, aber nicht funktioniert haben ・ Personen, die den Eins-zu-Eins- und den Viele-zu-Eins-Inhalt der Datenbank kennen

Umgebung

Bitte installieren Sie die folgenden Pakete.

pip install django django-import-export

Inhaltsverzeichnis

  1. Erstellen Sie ein Projekt
  2. App erstellen
  3. Erstellen Sie eine CSV-Datei
  4. Versuchen Sie zu importieren

Projekterstellung

Grundlegende Konfiguration

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

Da das Projekt und das Modell mit dem obigen Befehl erstellt werden können, fügen Sie in settings.py zusätzliche Apps und Module hinzu.

# config/settings.py

INSTALLED_APPS = [
    "import_export",#django-import-Erforderlich, um den Export zu verwenden
    "Book",#App diesmal erstellt
]

App

Dieses Mal werden wir drei Modelle erstellen. Beschreiben Sie die zuvor erstellten Modelle des Buches wie folgt.

#Book/models.py
from django.db import models
class Publisher(models.Model):
    name = models.CharField("Name des Herausgebers",max_length=100,help_text="der Herausgeber")

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

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

Der Inhalt des Modells ist wie folgt. ・ Buch hat viele Beziehungen zum Verlag ・ BookPrice und Book haben eine Eins-zu-Eins-Beziehung

Die Wende von Django-Import-Export

Um CSV-Dateien in diese Modelle zu importieren, legen Sie sie auf dem Verwaltungsbildschirm fest. Hier kommt Django-Import-Export ins Spiel. Die konkrete Methode wird abgeschlossen, indem Sie nur mit dem Administrator spielen.

#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)

** Legen Sie die Details der CSV-Datei fest, die mit Resource importiert werden soll. Beschreiben Sie die Spalte, die in Feldern gelesen werden soll. Zusätzlich zu den Feldern gibt es import_id_fields usw., und Sie können die ID als Befehl angeben. Darüber hinaus können Sie das Format ändern, das nur CSV akzeptiert, und festlegen, ob importiert werden soll, auch wenn sich die Daten ändern.

Erstellung einer CSV-Datei

Erstellen Sie von hier aus drei CSV-Dateien in Excel. Wenn Sie wie unten gezeigt auf ein anderes Modell zeigen, können Sie eine Verknüpfung herstellen, indem Sie die zu verknüpfende ID-Nummer eingeben. Zum Beispiel zeigen "Kimi no Koe" und "Kimi no Oto" im Buch Objekte des Verlags Nakagawa Bunko. BookPrice's Book hat eine Eins-zu-Eins-Beziehung, daher haben BookPrice und Book dieselbe ID-Nummer.

Modell: Verlag

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

Modell: Buch

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

Modell: BookPrice

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

Versuchen Sie zu importieren

python manage.py createsuperuser #Ich wurde viel gefragt, aber wie es geschrieben steht
python manage.py runserver

Wenn Sie zum Verwaltungsbildschirm von Django gehen, können Sie die drei zuvor erstellten Modelle auf dem Verwaltungsbildschirm sehen. Wenn Sie hier auf Publisher klicken, wird der folgende Bildschirm angezeigt. スクリーンショット 2020-04-24 18.48.40.png IMPORT wird in der oberen rechten Ecke dieses Bildschirms angezeigt. Importieren Sie daher von hier aus. Anschließend wird das von Ihnen erstellte Modell registriert. Es ist auch mit dem Modell verknüpft, überprüfen Sie es daher bitte.

Am Ende

In diesem Artikel habe ich Django-Import-Export verwendet, um die Daten im Django-Modell zu registrieren. Insbesondere haben wir drei Modelle erstellt und gezeigt, dass jedes eine entsprechende Beziehung zu anderen Modellen hat. Die Datenbeziehung kann jedoch durch Angabe ihrer IDs beibehalten werden. Wenn ich eine Chance habe, möchte ich als nächstes versuchen, ein Viele-zu-Viele-Modell zu erstellen.

Recommended Posts

Versuchen Sie, mit django-import-export csv-Daten zu django hinzuzufügen
Versuchen Sie es mit Django templates.html
Fügen Sie dem Verwaltungsbildschirm mit django-import-export die CSV-Exportfunktion hinzu
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
Hinzufügen neuer Daten (gerade Linien und Diagramme) mit matplotlib
Behandeln Sie CSV-Dateien mit Django (Django-Import-Export)
Versuchen Sie, Nagios mit pynag zu konfigurieren
Analysieren Sie Daten im CSV-Format mit SQL
Versuchen Sie, Daten in MongoDB abzulegen
Versuchen Sie, Statistiken mit e-Stat abzurufen
[Django] Befehl zum Ausgeben von QuerySet an csv
Entwicklung einer WEB-Anwendung mit Django [Daten vom Verwaltungsbildschirm hinzufügen]
Versuchen Sie, Online-Familien-Mahjong mit Python zu analysieren (TEIL 1: Daten aufnehmen)
[Django 2.2] Fügen Sie neuen Posts mit einem Datum mithilfe eines Vorlagenfilters ein neues Abzeichen hinzu
Versuchen Sie es mit der Datenintegrationsfunktion von scanpy (sc.tl.ingest).
Versuchen Sie, die Fusionsbewegung mit AnyMotion zu erkennen
Versuchen Sie es mit Pythons Webframework Django (1) - Von der Installation bis zum Serverstart
Versuchen Sie, den Zustand der Straßenoberfläche mithilfe von Big Data des Straßenoberflächenmanagements zu ermitteln
Versuchen Sie, Excel mit Python (Xlwings) zu betreiben.
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Ich habe versucht, mit Django eine CSV-Upload-, Datenverarbeitungs- und Download-Funktion zu erstellen
Konvertieren Sie CSV- und TsV-Daten in eine Matrix mit Python als Beispiel für MovieLens
Versuchen Sie, mit WebSocket mit Django (Swamp Dragon) eine Todo-Verwaltungssite zu erstellen.
Erstellen von CSV-Beispieldaten mit Hypothese
[Einführung in das SEIR-Modell] Versuchen Sie, COVID-19-Daten anzupassen ♬
Fügen Sie Formularobjekten mit Django dynamisch Felder hinzu
Versuchen Sie, Doujin-Musikdaten mit Pandas zu aggregieren
Versuchen Sie, Blueprint with Flask zu verwenden, um Controller zu trennen
Ich möchte CSV-Dateien mit Vega-Lite visualisieren!
[Django] So erhalten Sie Daten durch Angabe von SQL.
Vorbereitung zum Versuch "Data Science 100 Knock (Strukturierte Datenverarbeitung)"
So erhalten Sie Artikeldaten mithilfe der Qiita-API
Schreiben Sie CSV-Daten mit AWS-Lambda + Python in AWS-S3
Versuchen Sie, mit Node.js einen HTTP-Server zu erstellen
So suchen Sie HTML-Daten mit Beautiful Soup
Konvertieren Sie Daten im JSON-Format in txt (mit yolo)
Fügen Sie Funktionen zum Ändern der Django-Tagesschichtinformationen hinzu
Versuchen Sie es mit Tkinter
Versuchen Sie es mit Docker-Py
Versuchen Sie es mit einem Ausstecher
Versuchen Sie es mit PDFMiner
Jedes Mal, wenn ich versuche, eine CSV-Datei mit Pandas zu lesen, wird ein numpy-Fehler angezeigt.
Versuchen Sie es mit Geopandas
Versuchen Sie es mit Selen
Versuchen Sie es mit scipy
Versuchen Sie es mit pandas.DataFrame
Versuchen Sie es mit Django-Swiftbrowser
Versuchen Sie es mit matplotlib
Versuchen Sie es mit tf.metrics
Versuchen Sie es mit PyODE
Erstellen Sie eine Shogi-Score-Management-Anwendung mit Django 5 ~ DB-Daten an Vorlage übergeben ~
Ich konvertiere AWS JSON-Daten wie folgt in CSV
100 Sprachverarbeitung Knock-92 (mit Gensim): Anwendung auf Analogiedaten
[Python] [Django] Verwendung des Auswahlfelds und Hinzufügen von Optionen
Python-Anfänger versucht, dem Administrator von Django eine grundlegende Authentifizierung hinzuzufügen
Versuchen Sie, die offenen Daten von COVID-19 aus Yokohama / Tokio / Osaka zu verwenden
Registrieren Sie gemeinsam Daten im Firestore mithilfe der CSV-Datei in Python
Wie man Pferderenndaten mit pandas read_html kratzt
Versuchen Sie, mit MVC eine RESTful-API mit Flask 1.0.2 zu erstellen