Sto solo facendo lo stesso esercizio in questo momento. L'approccio che ho adottato è quello di creare un elenco di nuovi oggetti da DataFrame e quindi crearli in blocco:
bulk_create(objs, batch_size=Nessuno)
Questo metodo inserisce l'elenco di oggetti fornito nel database in modo efficiente (generalmente solo 1 query , non importa quanti oggetti ci sono)
Un esempio potrebbe essere questo:
# 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)