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
・ 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
Veuillez installer les packages suivants.
pip install django django-import-export
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
]
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
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.
À 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.
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. 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.
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.