Necesito la interfaz de administrador de Django para aceptar cargas de administrador de archivos de Excel donde los datos en cada archivo de Excel se insertan en mis modelos de base de datos. ¿Cómo puedo hacer que aparezca un botón de "Subir" en una página de administrador modelo de Django, donde al hacer clic en el botón se solicita al administrador que elija un archivo .xls
, cuyos datos luego se agregan a la base de datos una vez que se completa su carga?Importación de datos de Excel a modelos a través de django admin
Respuesta
No estoy seguro del lado de Django, pero puede usar xlrd para leer y manipular archivos de Excel. Hay un PDF gratuito que explica esto llamado Working with Excel files in Python
He hecho esto, pero configuré una vista simple con una carga de archivo (en realidad esto tiene más sentido que agregarlo directamente a una página de administración de Django, como una edición página = una instancia modelo, y supongo que su Excel contiene múltiples modelos).
en forms.py, un sencillo formulario con un campo de carga de archivos
class ImportExcelForm(forms.Form):
file = forms.FileField(label= "Choose excel to upload")
en views.py, a fin de procesar la carga
def test_flowcell(request):
c = RequestContext(request, {'other_context':'details here'})
if request.method == 'POST': # If the form has been submitted...
form = ImportExcelForm(request.POST, request.FILES) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
excel_parser= ExcelParser()
success, log = excel_parser.read_excel(request.FILES['file'])
if success:
return redirect(reverse('admin:index') + "pages/flowcell_good/") ## redirects to aliquot page ordered by the most recent
else:
errors = '* Problem with flowcell * <br><br>log details below:<br>' + "<br>".join(log)
c['errors'] = mark_safe(errors)
else:
c['errors'] = form.errors
else:
form = ImportExcelForm() # An unbound form
c['form'] = form
return render_to_response('sequencing/file_upload.html')
y como se sugiere en la otra el uso post xlrd para leer los datos desde el archivo de Excel. Tengo un ExcelParser.py archivo separado para este
import xlrd
class ExcelParser(object, excel_name):
@transaction.commit_on_success
def read_excel(self):
wb = xlrd.open_workbook(excel_name)
...
do your parsing in here.....
...
(Puedo añadir, que Excel es una forma propensos terrible, y de error para importar datos. Puedo hacer una gran cantidad de ella en mi trabajo, y estoy tratando de convencer a la gerencia de que hay soluciones mucho mejores.)
django-import-export podría ser útil.
Crea dos botones "importar" y "exportar" para objetos administrativos y permite seleccionar muchos tipos de extensiones, incluyendo xls. También muestra que los datos se importan y solicita confirmación antes de ejecutar la ejecución.
Solo necesita incluirlo en INSTALLED_APPS y crear un recurso de importación y exportación de la clase que desea cargar y una subclase de ImportExportModelAdmin relacionada con la clase de recurso creada anteriormente para mostrar botones en admin.
más información en:
http://django-import-export.readthedocs.org/en/latest/getting_started.html https://github.com/bmihelac/django-import-export.
- 1. Modelos de grupo en django admin
- 2. Display define a través de 'a' admin
- 3. Pasar datos de Python a JavaScript a través de Django
- 4. Exponer django admin a los usuarios. ¿Perjudicial?
- 5. ¿Cómo acceder a ambas direcciones de ManyToManyField en Django Admin?
- 6. django admin - permisos de grupo para editar o ver modelos
- 7. ¿Cómo forzar a Django Admin a usar select_related?
- 8. Cómo subir archivos múltiples en los modelos django admin
- 9. Importación de archivos csv de varias líneas a Excel internacionalmente
- 10. ¿Por qué no puedo cargar archivos jpg en mi aplicación Django a través de admin /?
- 11. importación sin resolver: modelos
- 12. Importación automática de modelos en el lanzamiento del shell Django
- 13. django ManyToMany a través de la ayuda
- 14. Django: solicitud de acceso a objetos de form.clean de admin()
- 15. importación de modelo de Django
- 16. Importación de datos de hoja de cálculo de Excel a otra hoja de cálculo de Excel que contiene VBA
- 17. Acceso a Django Admin sobre HTTPS detrás de Nginx
- 18. Django fix Admin plural
- 19. Exportación de datos MYSQL a Excel/CSV a través de php
- 20. Django admin inline
- 21. en el archivo de Excel a través de PHP
- 22. Django admin, sección sin "modelo"?
- 23. django-tastypie y muchos a muchos "a través de" relaciones
- 24. Eliminar las aplicaciones predeterminadas de Django-admin
- 25. A Better Django Admin ManyToMany Widget de campo
- 26. Importación de modelos en un proyecto OpenGL
- 27. django admin datos de campo de clave externa agregue
- 28. Exportar datos de consulta SQL a Excel
- 29. Actualizar modelo django a través de kwargs
- 30. En Django, ¿cómo imito el método de dos pasos de agregar usuarios a través del administrador para mis propios modelos?
Esta es una gran pregunta, algo que otro desarrollador que conozco ha necesitado antes de Django, y que yo mismo necesito en uno de mis propios proyectos en este momento. La pregunta debe volver a abrirse para que podamos compartir cómo obtenemos la carga de Excel trabajando en la Interfaz de administración de Django. –
Ah, y mientras tanto, hay una pregunta similar que las personas pueden consultar, pero que involucra el formato de archivo '.csv' en lugar del formato de archivo de Excel: http://stackoverflow.com/questions/3974620/ –