Django не может перехватить все значения, выбрасывая исключение
Я пытаюсь импортировать данные excel в модель django. Чтобы проверить это, я использовал файл excel с более чем 4000 строк. Одно из полей в модели требует, чтобы запись была уникальной, поэтому я попытался отловить все записи, которые таковыми не являются. У меня есть блок try-catch
вокруг кода, который пытается добавить значения каждой строки в модель.
integrity_catches = {}
integrity_counts = 0
# loop start
try:
new_student = Student(
student_school = school,
student_class = selected_class,
student_stream = selected_stream,
admission_number = admission_number_cell,
student_name = student_name_cell,
parent_phone = parent_phone_cell,
kcpe_marks = kcpe_marks_cell
)
new_student.save()
except IntegrityError as e:
integrity_catches[admission_number_cell] = student_name_cell
integrity_counts = integrity_counts + 1
continue
# loop end
Код работает хорошо, но импортирует только 250 студентов, поэтому я ожидаю, что он добавит остальных в словарь integrity_catches
. Проблема в том, что словарь содержит 202
записей, в то время как integrity_counts
показывает 4035
. Это означает, что более чем 4000
записей вызвали исключение, но не были сохранены в словаре. Я пытаюсь убедиться, что когда кто-то импортирует данные из листа excel, он сможет увидеть все записи, которые не удалось добавить в базу данных.
Также если я посмотрю на успешно импортированные значения, я замечу, что некоторые очевидные числа отсутствуют, но они есть в excel. И если я посмотрю на значения, которые попали в словарь, некоторые значения, которые явно повторяются, не добавляются в него. Как OI может это исправить?