Estou apenas passando pelo mesmo exercício no momento. A abordagem que tomei é criar uma lista de novos objetos do DataFrame e, em seguida, criá-los em massa:
bulk_create(objs, batch_size=Nenhum)
Este método insere a lista de objetos fornecida no banco de dados de maneira eficiente (geralmente apenas 1 consulta , não importa quantos objetos existam)
Um exemplo pode ser assim:
# Not able to iterate directly over the DataFrame
df_records = df.to_dict('records')
model_instances = [MyModel(
field_1=record['field_1'],
field_2=record['field_2'],
) for record in df_records]
MyModel.objects.bulk_create(model_instances)