bulk_create with ignore_conflicts=True insert new records only and doesn't update existing one. bulk_update updates only existing records and doesn't insert new one. Now I see only one variant to make upsert is a raw query: from catalog.models import Product with connection.cursor() as cursor: cursor.executemany( """ INSERT INTO app_table (pk, col1, col2) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE col1 = VALUES(col1), col2 = VALUES(col2); """, [ ('1', 'val1', 'val2'), ('2', 'val1', 'val2'), ] ) Is there another way to perform bulk upsert in Django? Continue reading...