I have implemented django-import-export for my project.
It provides me many file format options by default fro both import and export.
How to restrict the file formats to only CSV, XLS and XLSX ?
You can override the get_export_formats()
method of the ExportMixin
:
from import_export.formats import base_formats
class MyAdmin(ExportMixin):
# your normal stuff
def get_export_formats(self):
"""
Returns available export formats.
"""
formats = (
base_formats.CSV,
base_formats.XLS,
base_formats.XLSX,
base_formats.TSV,
base_formats.ODS,
base_formats.JSON,
base_formats.YAML,
base_formats.HTML,
)
return [f for f in formats if f().can_export()]
This is old, but for those who might like to know...I can't comment above because I don't have "50 reputation". To extend Burhan Khalid's answer above, if you'd like to apply these format restrictions (or any overwritten methods of ExportMixin to multiple admin classes) you can create an abstract base class in the admin and then use that class for the classes you'd like to keep those overwrites.
from import_export.formats import base_formats
# use for all admins that are admin.ModelAdmin and use ExportMixin
class ExportMixinAdmin(ExportMixin, admin.ModelAdmin):
# your normal stuff
def get_export_formats(self):
formats = (
base_formats.CSV,
base_formats.XLS,
base_formats.XLSX,
)
return [f for f in formats if f().can_export()]
class Meta:
abstract = True
class ModelOneAdmin(ExportMixinAdmin):
# your normal stuff here
class ModelTwoAdmin(ExportMixinAdmin):
# your normal stuff here
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With