Ich benötige die Django Admin-Schnittstelle, um Administrator-Uploads von Excel-Dateien zu akzeptieren, bei denen die Daten in jeder Excel-Datei in meine Datenbankmodelle eingefügt werden. Wie kann ich eine solche "Upload" -Schaltfläche auf einer Django-Modell-Admin-Seite erscheinen lassen, wo der Administrator durch Klicken auf die Schaltfläche eine .xls
-Datei auswählen muss, deren Daten dann nach Abschluss des Uploads zur Datenbank hinzugefügt werden?
Ich bin nicht sicher über die Django-Seite der Dinge, aber Sie können xlrd verwenden, um Excel-Dateien zu lesen und zu bearbeiten . Es gibt eine kostenlose PDF-Datei, die dies erklärt Mit Excel-Dateien in Python arbeiten
Ich habe das gemacht, aber ich habe einfach eine einfache Ansicht mit einem Datei-Upload eingerichtet (eigentlich ist das sinnvoller, als direkt in eine Django-Admin-Seite einzufügen, als eine Bearbeitungsseite = eine Modellinstanz, und ich nehme an, dass Ihre Excel enthält mehrere Modelle.
in forms.py, einem einfachen Formular mit einem Datei-Upload-Feld
%Vor%in views.py, eine Ansicht zum Verarbeiten des Uploads
%Vor%und wie in dem anderen Beitrag vorgeschlagen, verwenden Sie xlrd, um die Daten aus der Excel-Datei einzulesen. Ich habe eine separate Datei ExcelParser.py für diese
%Vor%(Ich möchte hinzufügen, dass Excel eine schreckliche und fehleranfällige Methode zum Importieren von Daten ist. Ich mache eine Menge davon bei meiner Arbeit und versuche, das Management davon zu überzeugen, dass es weitaus bessere Lösungen gibt.)
django-import-export könnte hilfreich sein.
Er erstellt zwei Schaltflächen "importieren" und "exportieren" für Admin-Objekte und ermöglicht die Auswahl vieler Arten von Erweiterungen, einschließlich xls. Es zeigt auch an, dass die Daten importiert werden und fordert eine Bestätigung, bevor die Ausführung ausgeführt wird.
Sie müssen es nur in INSTALLED_APPS einfügen und eine Import-Export-Ressource der Klasse erstellen, die Sie hochladen möchten, und eine Unterklasse von ImportExportModelAdmin, die mit der zuvor erstellten Ressourcenklasse verknüpft ist, um Schaltflächen in admin anzuzeigen.
mehr Infos unter:
Tags und Links python django django-admin xls