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.
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.
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
.
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
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 de
ModelResource 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.
À 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. .. ..
https://qiita.com/kira_puka/items/14a1a604a428a4c68884 https://django-import-export.readthedocs.io/en/stable/index.html
Recommended Posts