import openpyxl
from django.http import HttpResponse

def export_to_excel(request):
    response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
    response['Content-Disposition'] = 'attachment; filename=mymodel.xlsx'

    wb = openpyxl.Workbook()
    ws = wb.active

    # Obtén tus modelos relacionados aquí
    model1 = MyModel1.objects.all()
    model2 = MyModel2.objects.all()
    model3 = MyModel3.objects.all()

    # Escribir los encabezados de las columnas
    row_num = 1
    columns = [
        (uID, 15),
        (uNombre, 30),
        (uDescripción, 40),
        (uFecha de creación, 20),
    ]

    for col_num, column_title in enumerate(columns, 1):
        c = ws.cell(row=row_num, column=col_num)
        c.value = column_title[0]
        c.font = openpyxl.styles.Font(bold=True)
        ws.column_dimensions[openpyxl.utils.get_column_letter(col_num)].width = column_title[1]

    # Escribir los datos de los modelos
    for obj in model1:
        row_num += 1
        row = [
            obj.id,
            obj.name,
            obj.description,
            obj.created_at,
        ]
        for col_num, cell_value in enumerate(row, 1):
            c = ws.cell(row=row_num, column=col_num)
            c.value = cell_value

    # Escribir los datos de los otros modelos de la misma manera

    wb.save(response)
    return response
El fragmento de código anterior muestra cómo usar la biblioteca openpyxl para exportar datos de los modelos de Django a una hoja de cálculo de Excel. Para hacer esto, el código primero crea un libro de trabajo en blanco y una hoja de trabajo activa. Luego, escribe los encabezados de las columnas en la hoja de trabajo y establece los anchos de columna.

A continuación, recorre los modelos y escribe los datos de cada modelo en la hoja de trabajo. Para cada modelo, escribe los campos id, name, description y created_at en la hoja de trabajo. Finalmente, el código guarda el libro de trabajo en la respuesta y devuelve la respuesta.