2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-07-02 03:30:54 +00:00
Files
InvenTree/docs/docs/plugins/mixins/export.md
Matthias Mair 4b1eeefb1f feat(docs): add architecture/roadmap (#9624)
* feat(docs): Add architecture overview

* add strucutre for rough roadmap

* add stable reference

* document stable links

* test mermaid again

* fix loading

* fix format to reduce warnings

* use local js

* add architecture ovierview

* add more sub-points

* more structure

* add general backend text

* add sme bqsic docs for frontend

* fix list syntax

* fix typo
2025-06-13 11:28:02 +10:00

4.1 KiB

title
title
Data Export Mixin

DataExportMixin

The DataExportMixin class provides a plugin with the ability to customize the data export process. The InvenTree API provides an integrated method to export a dataset to a tabulated file. The default export process is generic, and simply exports the data presented via the API in a tabulated file format.

Custom data export plugins allow this process to be adjusted:

  • Data columns can be added or removed
  • Rows can be removed or added
  • Custom calculations or annotations can be performed.

Supported Export Types

Each plugin can dictate which datasets are supported using the supports_export method. This allows a plugin to dynamically specify whether it can be selected by the user for a given export session.

::: plugin.base.integration.DataExport.DataExportMixin.supports_export options: show_bases: False show_root_heading: False show_root_toc_entry: False summary: False members: [] extra: show_source: True

The default implementation returns True for all data types.

Filename Generation

The generate_filename method constructs a filename for the exported file.

::: plugin.base.integration.DataExport.DataExportMixin.generate_filename options: show_bases: False show_root_heading: False show_root_toc_entry: False summary: False members: [] extra: show_source: True

Adjust Columns

The update_headers method allows the plugin to adjust the columns selected to be exported to the file.

::: plugin.base.integration.DataExport.DataExportMixin.update_headers options: show_bases: False show_root_heading: False show_root_toc_entry: False summary: False members: [] extra: show_source: True

Queryset Filtering

The filter_queryset method allows the plugin to provide custom filtering to the database query, before it is exported.

::: plugin.base.integration.DataExport.DataExportMixin.filter_queryset options: show_bases: False show_root_heading: False show_root_toc_entry: False summary: False members: [] extra: show_source: True

Export Data

The export_data method performs the step of transforming a [Django QuerySet]({% include "django.html" %}/ref/models/querysets/) into a dataset which can be processed by the tablib library.

::: plugin.base.integration.DataExport.DataExportMixin.export_data options: show_bases: False show_root_heading: False show_root_toc_entry: False summary: False members: [] extra: show_source: True

Note that the default implementation simply uses the builtin tabulation functionality of the provided serializer class. In most cases, this will be sufficient.

Custom Export Options

To provide the user with custom options to control the behavior of the export process at the time of export, the plugin can define a custom serializer class.

To enable this feature, define an ExportOptionsSerializer attribute on the plugin class which points to a DRF serializer class. Refer to the examples below for more information.

Builtin Exporter Classes

InvenTree provides the following builtin data exporter classes.

InvenTreeExporter

A generic exporter class which simply serializes the API output into a data file.

::: plugin.builtin.exporter.inventree_exporter.InvenTreeExporter options: show_bases: False show_root_heading: False show_root_toc_entry: False show_source: True members: []

BOM Exporter

A custom exporter which only supports bill of materials exporting.

::: plugin.builtin.exporter.bom_exporter.BomExporterPlugin options: show_bases: False show_root_heading: False show_root_toc_entry: False show_source: True members: []

Source Code

The full source code of the DataExportMixin class:

{{ includefile("src/backend/InvenTree/plugin/base/integration/DataExport.py", title="DataExportMixin") }}