Als ich eine App zur Verwaltung der Restaurantkosten erstellt habe Da frühere Daten sofort importiert werden mussten, fand ich ein nützliches Plug-In. Ich denke, es kann verwendet werden, um in Zukunft eine große Menge von Daten wie Aktienkursdaten zu verwalten.
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="Flagge")
category = models.ForeignKey(Category, on_delete = models.PROTECT, verbose_name="Kategorie")
class Cost(models.Model):
date = models.DateField(verbose_name="Datum",default=datetime.now)
shop = models.ForeignKey(Shop, on_delete = models.PROTECT, verbose_name="Speichername")
price = models.IntegerField(verbose_name="Geldbetrag", help_text="Eingabe in halber Breite")
memo = models.CharField(verbose_name="Bemerkungen", max_length=500, blank=True)
created_at = models.DateTimeField(verbose_name='Eingetragenes Datum', auto_now_add=True)
updated_at = models.DateTimeField(verbose_name='Datum und Uhrzeit aktualisieren', auto_now=True)
Um die Kosten für Restaurants zu verwalten, gibt es drei Modelle wie Kategorie, Lieferant, Geldbetrag usw. Der Rest ist wie in models.py.
django-import-export
$ pipenv install django-import-export
Das Obige ist bei Verwendung von pipenv.
Wenn Sie mit pip installieren, können Sie dies mit $ pip install django-import-export
tun.
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#···Kürzung
'import_export', #Hier hinzufügen
]
Fügen Sie "import_export" zu INSTALLED_APPS in settings.py unter dem Projekt hinzu
admin.py
from django.contrib import admin
from import_export import resources
from import_export.admin import ImportExportModelAdmin
from .models import Category, Shop, Cost
#Erstellen Sie eine Klasse, die ModelResource erbt, um sie in das Kategoriemodell zu integrieren
class CategoryResource(resources.ModelResource):
class Meta:
model = Category
#Erstellen Sie eine Klasse, die ModelResource erbt, um sie in das Shop-Modell zu integrieren
class ShopResource(resources.ModelResource):
class Meta:
model = Shop
#Erstellen Sie eine Klasse, die ModelResource erbt, um sie in das Kostenmodell zu integrieren
class CostResource(resources.ModelResource):
class Meta:
model = Cost
@admin.register(Category)
#Erstellen Sie eine Admin-Klasse, die ImportExportModelAdmin erbt
class CategoryAdmin(ImportExportModelAdmin):
ordering = ['id']
list_display=('id', 'category_name')
# resource_Setzen Sie die Klasse auf eine Klasse, die ModelResource erbt
resource_class = CategoryResource
@admin.register(Shop)
#Erstellen Sie eine Admin-Klasse, die ImportExportModelAdmin erbt
class ShopAdmin(ImportExportModelAdmin):
ordering = ['id']
list_display=('id', 'shop_name', 'flag', 'category')
# resource_Setzen Sie die Klasse auf eine Klasse, die ModelResource erbt
resource_class = ShopResource
@admin.register(Cost)
#Erstellen Sie eine Admin-Klasse, die ImportExportModelAdmin erbt
class CostAdmin(ImportExportModelAdmin):
ordering = ['id']
list_display=('id', 'date', 'shop', 'price', 'memo')
# resource_Setzen Sie die Klasse auf eine Klasse, die ModelResource erbt
resource_class = CostResource
Eine Klasse, die ModelResource
und erbt
Erstellen Sie eine Admin-Klasse, die "ImportExportModelAdmin" erbt
Schreiben Sie einfach eine Klasse, die "ModelResource" in "resource_class" erbt.
So stellen Sie die definierte Ressourcenklasse auf dem Verwaltungsbildschirm zur Verfügung
Es ist möglicherweise einfacher zu verstehen, wenn Sie glauben, dass es mit admin.py verknüpft ist.
Übrigens unterstützt es neben "csv" auch "xls", "xlsx", "tsv", "json" und "yaml". Überraschend praktisch. Ich habe jedoch das Gefühl, dass die Verarbeitungsgeschwindigkeit bei vielen Daten etwas langsam ist. .. ..
https://qiita.com/kira_puka/items/14a1a604a428a4c68884 https://django-import-export.readthedocs.io/en/stable/index.html
Recommended Posts