Je fais le même exercice en ce moment. L'approche que j'ai adoptée consiste à créer une liste de nouveaux objets à partir du DataFrame, puis à les créer en masse :
bulk_create(objs, batch_size=Aucun)
Cette méthode insère la liste d'objets fournie dans la base de données de manière efficace (généralement une seule requête , quel que soit le nombre d'objets)
Un exemple pourrait ressembler à ceci :
# 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)