Utilice la experiencia de administrador en Django para implementar la importación de Excel/CSV, actualizar la base de datos y exportar datos a Excel/CSV.

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-exportmó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.pyModificar 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_exportla función de importación y exportación, debe admin.pyespecificar 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 = Bookespecificando que la importación y exportación involucrarán todos los campos)

class BookAdmin(ImportExportModelAdmin):Heredado de ImportExportModelAdminImplement adminIntegration.

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 resourcesla adminclase y en un archivo. En el proyecto real, todos los archivos que definen el recurso se pueden escribir en archivos independientes resources.pye importar cuando se usan.

class BookResource(resources.ModelResource):
    class Meta:
        model = Book

Supongo que te gusta

Origin blog.csdn.net/agelee/article/details/127613248
Recomendado
Clasificación