Фильтр строк из Excel при импорте с помощью Django Import-Export
У меня есть новое веб-приложение Django (мое первое на python) и я использую импорт-экспорт в разделе администратора, чтобы взять файл excel и загрузить его в мою базу данных. Загрузка работает отлично, но мне нужно добавить две функции:
- Is there a way to truncate all the existing data in the application database table before the upload?
- What is the best way to filter out rows from the Excel file that don't match a condition (if column value of a row != X)
Я прочитал документацию, и кажется, что для вопроса 2 единственным вариантом является реализация метода for_delete. Мне трудно поверить, что это лучший способ, но я совсем новичок в python и Django.
- Override
before_import()для удаления всех строк. - Override
skip_row()для пропуска строки, если условие не выполняется.
class SaleResource(resources.ModelResource):
myColumn = fields.Field(attribute='myColumn', column_name="my_Column")
def before_import(self, dataset, using_transactions, dry_run, **kwargs):
if not dry_run:
self._meta.model.objects.delete()
def skip_row(self, instance, original):
# 'instance' will be an instance of Sale
# simple compare the value set on the model instance
return instance.myColumn != "myValue"
class Meta:
model = Sale