es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

URL personalizado de exportación para la función de encabezados de exportación.

Tengo esto en mis recursos:

def exportar (self, queryset = None, * args, ** kwargs):
datos = super (). Exportar (queryset, args, kwargs)
return tablib.Dataset (encabezados = datos.encabezados)

Exporta solo los campos de encabezado para los archivos. Quiero vincularlo solo a un botón:

pero considerando que la exportación personalizada está dentro de mi recurso de modelo, también se aplica al botón de exportación.

Este es mi template personalizado:

¿Cómo lo agrego solo al botón de la plantilla? ¿Algo como una nueva URL?

{% Extiende ‘admin / change_list.html’%}
{% Load static%}
{% Carga i18n%}

{% Block object-tools%}

{{ baseURL | json_script: & quot;base-url & quot;}}
{{ TypeplateType | json_script: & quot;template-type & quot;}}

También puede hacer clic en ID para copiar al portapapeles



{% Endblock%}

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puedes agregar una nueva URL al botón de la plantilla añadiendo una etiqueta con la URL de tu exportación personalizada. Por ejemplo:

    <ul class="object-tools">
        <li><a href="/crowdfunding/investment/export/?">Plantilla</a></li>
        <li><a href="/crowdfunding/investment/import/" class="import_link">Importar</a></li>
        <li><a href="/crowdfunding/investment/export/?custom_export=true" class="export_link">Exportar</a></li>
        <li><a href="/crowdfunding/investment/add/" class="addlink">Agregar Inversión</a></li>
    </ul>
    

    Luego, en tu recurso de modelo, puedes verificar el parámetro custom_export y usar tu exportación personalizada si está presente:

    def export(self, queryset=None, *args, **kwargs):
        if kwargs.get('custom_export', False):
            data = super().export(queryset, args, kwargs)
            return tablib.Dataset(headers=data.headers)
        else:
            # Código de exportación predeterminado aquí
    

Comments are closed.