Este artículo se basa en los conocimientos de administración que vienen con Django para importar archivos Excel, csv, Json y otros formatos y actualizar la base de datos en segundo plano.
El núcleo es introducir django-import-export
módulos.
1. Preparación de datos de la fase de prueba:
Primero creemos una aplicación: app01
python manage.py startapp app01
Luego escriba los siguientes datos del modelo en models.py en la carpeta app01:
# app01/models.py
class Author(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Category(models.Model):
name = models.CharField(max_length=100)
def __str__(self):
return self.name
class Book(models.Model):
name = models.CharField('Book name', max_length=100)
author = models.ForeignKey(Author, blank=True, null=True,on_delete=models.CASCADE)
author_email = models.EmailField('Author email', max_length=75, blank=True)
imported = models.BooleanField(default=False)
published = models.DateField('Published', blank=True, null=True)
price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True)
categories = models.ManyToManyField(Category, blank=True)
def __str__(self):
return self.name
2. Instalacióndjango-import-export
Especificar el espejo Tsinghua será mucho más rápido
pip instala django-import-export -i https://pypi.tuna.tsinghua.edu.cn/simple
3. settings.py
Modificar y agregar elementos de configuración.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',
'import_export',
]
# django-import-export配置
IMPORT_EXPORT_USE_TRANSACTIONS = True # 默认值为False。它确定库是否会在数据导入中使用数据库事务,以确保安全。
Dos modificaciones:
- Registrar importación_exportación, aplicación01
- Agregar elemento de configuración: IMPORT_EXPORT_USE_TRANSACTIONS = Verdadero
4. Agregue información mostrada y exportada por el administrador.
Para utilizar finalmente import_export
la función de importación y exportación, debe admin.py
especificar el modelo y la información del campo relacionado que debe importarse y exportarse en formato .
Por ejemplo:
#app01/admin.py
from import_export import resources
from .models import Book
from import_export.admin import ImportExportModelAdmin
class BookResource(resources.ModelResource):
class Meta:
model = Book
class BookAdmin(ImportExportModelAdmin):
resource_classes = [BookResource]
admin.site.register(Book, BookAdmin)
El código anterior se implementa de la siguiente manera:
class BookResource(resources.ModelResource):
Especifique los campos y métodos relacionados con la importación y exportación del modelo (aquí simplemente pase:,model = Book
especificando que la importación y exportación involucrarán todos los campos)
class BookAdmin(ImportExportModelAdmin):
Heredado deImportExportModelAdmin
Implementadmin
Integration.
admin.site.register(Book, BookAdmin)
: Registre el modelo en el backend de Django.
5. Demostración de prueba
página de inicio del administrador:
En la página de gestión del modelo de libro, aparecen los botones de importar y exportar.
Prepare el archivo e importe los datos (el encabezado del archivo debe nombrarse de acuerdo con el nombre del campo; de lo contrario, los datos importados no serán reconocidos)
6. Conclusión
Para implementar rápidamente la función anterior, escribimos resources
la admin
clase y en un archivo. En el proyecto real, todos los archivos que definen el recurso se pueden escribir en archivos independientes resources.py
e importar cuando se usan.
class BookResource(resources.ModelResource):
class Meta:
model = Book