from django.db import migrations, models def raise_error(apps, schema_editor): # Test operation in non-atomic migration is not wrapped in transaction Publisher = apps.get_model("migrations", "Publisher") Publisher.objects.create(name="Test Publisher") raise RuntimeError("Abort migration") class Migration(migrations.Migration): atomic = False operations = [ migrations.CreateModel( "Publisher", [ ("name", models.CharField(primary_key=True, max_length=255)), ], ), migrations.RunPython(raise_error), migrations.CreateModel( "Book", [ ("title", models.CharField(primary_key=True, max_length=255)), ( "publisher", models.ForeignKey( "migrations.Publisher", models.SET_NULL, null=True ), ), ], ), ]