Django Import Export
django-import-export позволяет легко добавить функционал импорта и экспорта данных в Django админку.
Установка
Настройка
1# settings.py
2INSTALLED_APPS = [
3 'import_export',
4]
5
6# admin.py
7from import_export.admin import ImportExportModelAdmin
8from import_export import resources
9from .models import Book
10
11class BookResource(resources.ModelResource):
12 class Meta:
13 model = Book
14 import_id_fields = ('id',)
15
16@admin.register(Book)
17class BookAdmin(ImportExportModelAdmin):
18 resource_class = BookResource
19 list_display = ['title', 'author', 'published_date']
Кастомизация полей
Валидация данных
1class BookResource(resources.ModelResource):
2 def before_import_row(self, row, **kwargs):
3 # Валидация перед импортом
4 if not row.get('title'):
5 raise ValueError('Title is required')
6
7 def after_import_row(self, row, instance, **kwargs):
8 # Действия после импорта
9 instance.save()
10
11 class Meta:
12 model = Book
Экспорт в разные форматы
FAQ
Q: Как валидировать данные при импорте?
A: Переопредели метод before_import_row в resource классе.
Q: Можно ли экспортировать только определенные поля?
A: Да, используй fields в Meta классе.