Почему в django-import-export не работает use_bulk?
Я использую django-import-export, построчный импорт через import_data работает без проблем, но когда я включаю опцию use_bulk=True, он прекращает импорт и не выдает никаких ошибок. Почему это не работает?
resources.py
class ClientsResources(resources.ModelResource):
class Meta:
model = Clients
fields = ('id', 'name', 'surname', 'age', 'is_active')
batch_size = 1000
use_bulk = True
raise_errors = True
views.py
def import_data(request):
if request.method == 'POST':
file_format = request.POST['file-format']
new_employees = request.FILES['importData']
clients_resource = ClientsResources()
dataset = Dataset()
imported_data = dataset.load(new_employees.read().decode('utf-8'), format=file_format)
result = clients_resource.import_data(imported_data, dry_run=True, raise_errors=True)
if not result.has_errors():
clients_resource.import_data(objs, dry_run=False)
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
data.csv
id,name,surname,age,is_active
7,OFBCXMW,RTQPEWU,35,Y
8,DMEYSYQ,TVKHQXP,80,Y
9,ZQBQLKI,ACRDHPQ,73,Y
10,CETXHMS,BQNYNSA,52,Y
11,GWHVHAO,FUJUQLO,41,Y
Список create_instances будет пустым, если.
- Вы работаете в режиме не-бульк (
use_bulk = False) - похоже, что проблема не в этом, так как у вас это установлено OK. - Процесс пытается обновить (не создать).
- При разборе каждой строки возникает ошибка валидации.
Попробуйте еще кое-что:
- обновите код, чтобы передать
raise_errorsвimport_data(): т.е. вызовитеclients_resource.import_data(imported_data, dry_run=False, raise_errors=True).
- добавьте отладочный
print()для проверки спискаupdate_instancesвbulk_update()- пуст ли он?
Убедитесь, что обновление происходит следующим образом:
if not result.has_errors():
res = clients_resource.import_data(imported_data, dry_run=False)
print(res.totals)
Попробуйте установить эту beta и эта проблема будет устранена. На данный момент 2.8.0