def forwards(self, orm): db.delete_foreign_key('invapp_bagaction', 'bag_id') # Removing unique constraint on 'Bag', fields ['bagname'] db.delete_primary_key('invapp_bag') # Adding field 'Bag.id' db.add_column(u'invapp_bag', u'id', self.gf('django.db.models.fields.IntegerField')(primary_key=True, default=0), keep_default=False) db.delete_column(u'invapp_bagaction', 'bag_id') db.add_column(u'invapp_bagaction', 'bag_id', self.gf('django.db.models.fields.IntegerField')(default=0)) db.execute("CREATE SEQUENCE invapp_bag_id_seq") db.execute("ALTER TABLE invapp_bag ALTER COLUMN id " "SET DEFAULT nextval('invapp_bag_id_seq'::regclass)") sql = db.foreign_key_sql('invapp_bagaction', 'bag_id', 'invapp_bag', 'id') db.execute(sql) # Changing field 'Bag.bagname' #db.alter_column(u'invapp_bag', 'bagname', self.gf('django.db.models.fields.TextField')()) db.create_unique('invapp_bagaction', ['bag_id', 'action', 'timestamp'])
def forwards(self, orm): "Make remote_id Primary Key" # Remove PK from Album db.delete_foreign_key('vkontakte_photos_photo', 'album_id') photos = orm.Photo.objects.only('album').all() # for p in photos: album = orm.Album.objects.get(id=p.album_id) p.album_id = album.remote_id p.save() db.delete_primary_key('vkontakte_photos_album') #db.delete_column(u'vkontakte_photos_album', u'id') db.create_primary_key('vkontakte_photos_album', ['remote_id']) db.alter_column('vkontakte_photos_photo', 'album_id', models.ForeignKey( orm['vkontakte_photos.Album'], null=True, blank=True)) # Remove PK from Photo # Remove Foreign key from Comments and likes db.delete_foreign_key('vkontakte_photos_comment', 'photo_id') db.delete_foreign_key('vkontakte_photos_photo_like_users', 'photo_id') db.delete_primary_key('vkontakte_photos_photo') #db.delete_column(u'vkontakte_photos_photo', u'id') # Create Primary Keys db.create_primary_key('vkontakte_photos_photo', ['remote_id'])
def forwards(self, orm): db.delete_primary_key('pelican_admin_blogpost') # Adding field 'BlogPost.id' db.add_column('pelican_admin_blogpost', 'id', self.gf('django.db.models.fields.AutoField')(default=None, primary_key=True), keep_default=False) # Changing field 'BlogPost.file_path' db.alter_column('pelican_admin_blogpost', 'file_path', self.gf('django.db.models.fields.CharField')(unique=True, max_length=255))
def forwards(self, orm): # Removing primary key index on 'LeaderboardStanding', fields ['ranking'] db.delete_primary_key(u'links_leaderboardstanding') # Adding field 'LeaderboardStanding.id' db.add_column(u'links_leaderboardstanding', u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)) # Changing field 'LeaderboardStanding.ranking' db.alter_column(u'links_leaderboardstanding', 'ranking', self.gf('django.db.models.fields.PositiveIntegerField')()) # Adding unique constraint on 'LeaderboardStanding', fields ['ranking', 'metric'] db.create_unique(u'links_leaderboardstanding', ['ranking', 'metric'])
def forwards(self, orm): db.delete_primary_key('thing_apikey') db.rename_column('thing_apikey', 'id', 'keyid') if db.backend_name == 'postgres': db.execute("ALTER TABLE thing_apikey ADD COLUMN id INTEGER NOT NULL PRIMARY KEY") db.execute("CREATE SEQUENCE thing_apikey_id_seq") db.execute("SELECT setval('thing_apikey_id_seq', 1)") db.execute("ALTER TABLE thing_apikey ALTER COLUMN id SET DEFAULT nextval('thing_apikey_id_seq'::regclass)") elif db.backend_name == 'mysql': db.add_column('thing_apikey', 'id', models.AutoField(primary_key=True)) # try a fallback for any other weird databases else: db.add_column('thing_apikey', 'id', models.AutoField(primary_key=True, default=0), keep_default=False)
def forwards(self, orm): if not table_exists('microsite_microsite'): # Adding model 'MicroSite' db.create_table('microsite_microsite', ( ('basesection_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['section.BaseSection'], unique=True, primary_key=True)), )) db.send_create_signal('microsite', ['MicroSite']) else: db.delete_primary_key('microsite_microsite') db.create_primary_key('microsite_microsite', ['basesection_ptr_id']) db.delete_column('microsite_microsite', 'section_ptr_id') db.alter_column('microsite_microsite', 'basesection_ptr_id', models.ForeignKey(orm['section.BaseSection'], null=False, blank=False)) db.delete_table('section_section')
def backwards(self, orm): db.delete_primary_key("ralph_assets_assetcategory") db.add_column('ralph_assets_assetcategory', 'parent_new_id', self.gf('django.db.models.fields.IntegerField')(blank=True, null=True, db_index=False)) db.add_column('ralph_assets_assetcategory', 'id', self.gf('django.db.models.fields.AutoField')(blank=True, null=False, db_index=False, primary_key=True, max_length=10)) db.add_column('ralph_assets_asset', 'category_new_id', self.gf('django.db.models.fields.IntegerField')(blank=True, null=True, db_index=False)) db.add_column('ralph_assets_assetmodel', 'category_new_id', self.gf('django.db.models.fields.IntegerField')(blank=True, null=True, db_index=False)) db.start_transaction() for i, slug in enumerate( db.execute('SELECT slug FROM ralph_assets_assetcategory')): slug = slug[0] db.execute("UPDATE ralph_assets_assetcategory SET id = %s " "WHERE slug = %s", [i+1, slug]) db.execute("UPDATE ralph_assets_assetcategory SET parent_new_id = %s " "WHERE parent_id = %s", [i+1, slug]) db.execute("UPDATE ralph_assets_asset SET category_new_id = %s " "WHERE category_id = %s", [i+1, slug]) db.execute("UPDATE ralph_assets_assetmodel SET category_new_id = %s " "WHERE category_id = %s", [i+1, slug]) db.commit_transaction() db.delete_column('ralph_assets_assetcategory', 'slug') db.delete_column('ralph_assets_assetcategory', 'parent_id') db.rename_column('ralph_assets_assetcategory', 'parent_new_id', 'parent_id') db.delete_column('ralph_assets_asset', 'category_id') db.rename_column('ralph_assets_asset', 'category_new_id', 'category_id') db.delete_column('ralph_assets_assetmodel', 'category_id') db.rename_column('ralph_assets_assetmodel', 'category_new_id', 'category_id') sql = db.foreign_key_sql('ralph_assets_asset', 'category_id', 'ralph_assets_assetcategory', 'id') db.execute(sql) sql = db.foreign_key_sql('ralph_assets_assetmodel', 'category_id', 'ralph_assets_assetcategory', 'id') db.execute(sql) sql = db.foreign_key_sql('ralph_assets_assetcategory', 'parent_id', 'ralph_assets_assetcategory', 'id') db.execute(sql) db.create_index('ralph_assets_assetcategory', ['parent_id'], unique=False) db.create_index('ralph_assets_asset', ['category_id'], unique=False) db.create_index('ralph_assets_assetmodel', ['category_id'], unique=False)
def forwards(self, orm): # OMFG Get ready, we're going to change the primary key! # Doing bad things, disabling triggers db.execute("ALTER TABLE brainstorm_idea DISABLE TRIGGER ALL;") # Dropping foreign key constraint db.delete_foreign_key('brainstorm_idea', 'subsite_id') db.execute('DROP INDEX brainstorm_idea_subsite_id_like') db.delete_index('brainstorm_idea', ['subsite_id']) # Removing primary key on 'Subsite', fields ['slug'] db.delete_primary_key(u'brainstorm_subsite') # Adding primary key field 'Subsite.id' db.add_column(u'brainstorm_subsite', u'id', self.gf('django.db.models.fields.IntegerField')(blank=True, null=True)) # WOW. Have to manually create AutoFields. Thanks Django! db.execute('CREATE SEQUENCE brainstorm_subsite_id_seq;') db.execute("UPDATE brainstorm_subsite SET id = nextval('brainstorm_subsite_id_seq');") db.execute("ALTER TABLE brainstorm_subsite ALTER COLUMN id SET DEFAULT nextval('brainstorm_subsite_id_seq');") db.execute('ALTER SEQUENCE brainstorm_subsite_id_seq OWNED BY brainstorm_subsite.id;') db.execute("SELECT setval('brainstorm_subsite_id_seq', q.i) FROM(SELECT MAX(id) i FROM brainstorm_subsite) q;") # Now make it the pk db.create_primary_key('brainstorm_subsite', ['id']) # Updating foreign key values db.execute('''UPDATE brainstorm_idea idea SET subsite_id = subsite.id FROM brainstorm_subsite subsite WHERE(idea.subsite_id = subsite.slug);''') # Casting the fk to an integer db.execute("ALTER TABLE brainstorm_idea ALTER COLUMN subsite_id TYPE integer USING CAST(subsite_id AS integer);") # Re-adding foreign key constraint fk_sql = db.foreign_key_sql('brainstorm_idea', 'subsite_id', 'brainstorm_subsite', 'id') db.execute(fk_sql) # Changing field 'Subsite.slug' to a plain old slugfield db.alter_column(u'brainstorm_subsite', 'slug', self.gf('django.db.models.fields.SlugField')(max_length=50)) # Adding unique constraint on 'Subsite', fields ['slug'] db.create_unique(u'brainstorm_subsite', ['slug']) # Re-enabling triggers db.execute("ALTER TABLE brainstorm_idea ENABLE TRIGGER ALL;")
def test_primary_key(self): """ Test the primary key operations """ db.create_table("test_pk", [ ('id', models.IntegerField(primary_key=True)), ('new_pkey', models.IntegerField()), ('eggs', models.IntegerField(unique=True)), ]) db.execute_deferred_sql() # Remove the default primary key, and make eggs it db.delete_primary_key("test_pk") db.create_primary_key("test_pk", "new_pkey") # Try inserting a now-valid row pair db.execute("INSERT INTO test_pk (id, new_pkey, eggs) VALUES (1, 2, 3)") db.execute("INSERT INTO test_pk (id, new_pkey, eggs) VALUES (1, 3, 4)") db.delete_table("test_pk")
def forwards(self, orm): db.delete_column('pricing_instance_flavor_resource', 'description') db.alter_column('pricing_instance_flavor_resource', 'resource_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['resource_pricing.Resource'], unique=True)) db.rename_column('pricing_instance_flavor_resource', 'resource_id', 'resourcebase_ptr_id') db.rename_column('pricing_instance_flavor_resource', 'os_flavor_id', 'os_instance_type_id') db.create_index('pricing_instance_flavor_resource', ['os_instance_type_id'], unique=False) db.delete_primary_key('pricing_instance_flavor_resource') db.add_column('pricing_instance_flavor_resource', 'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)) db.delete_column('pricing_volume_type_resource', 'description') db.delete_primary_key('pricing_volume_type_resource') db.rename_column('pricing_volume_type_resource', 'os_type_id', 'os_volume_type_id') db.create_index('pricing_volume_type_resource', ['os_volume_type_id'], unique=False) db.add_column('pricing_volume_type_resource', u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True), keep_default=False) db.alter_column('pricing_volume_type_resource', 'resource_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['resource_pricing.Resource'], unique=True)) db.rename_column('pricing_volume_type_resource', 'resource_id', 'resource_ptr_id')
def backwards(self, orm): # Adding model 'Section' db.create_table( 'section_section', (('basesection_ptr', self.gf('django.db.models.fields.related.OneToOneField')( to=orm['section.BaseSection'], unique=True, primary_key=True)), )) db.send_create_signal('section', ['Section']) # Adding field 'BaseSection.status' db.add_column('section_basesection', 'status', self.gf('django.db.models.fields.CharField')( default='draft', max_length=20, db_index=True), keep_default=False) # Adding field 'BaseSection.slug' db.add_column('section_basesection', 'slug', self.gf('django.db.models.fields.SlugField')( default='', unique=True, max_length=200, db_index=True), keep_default=False) # Adding field 'BaseSection.main_image' db.add_column('section_basesection', 'main_image', self.gf('stdimage.fields.StdImageField')(max_length=100, null=True, blank=True), keep_default=False) # Adding field 'BaseSection.id' db.add_column('section_basesection', 'id', self.gf('django.db.models.fields.AutoField')( default=0, primary_key=True), keep_default=False) # Swapping primary key from basecontent_ptr_id to id db.delete_primary_key('section_basesection')
def backwards(self, orm): # Adding model 'Section' db.create_table('section_section', ( ('basesection_ptr', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['section.BaseSection'], unique=True, primary_key=True)), )) db.send_create_signal('section', ['Section']) # Adding field 'BaseSection.status' db.add_column('section_basesection', 'status', self.gf('django.db.models.fields.CharField')(default='draft', max_length=20, db_index=True), keep_default=False) # Adding field 'BaseSection.slug' db.add_column('section_basesection', 'slug', self.gf('django.db.models.fields.SlugField')(default='', unique=True, max_length=200, db_index=True), keep_default=False) # Adding field 'BaseSection.main_image' db.add_column('section_basesection', 'main_image', self.gf('stdimage.fields.StdImageField')(max_length=100, null=True, blank=True), keep_default=False) # Adding field 'BaseSection.id' db.add_column('section_basesection', 'id', self.gf('django.db.models.fields.AutoField')(default=0, primary_key=True), keep_default=False) # Swapping primary key from basecontent_ptr_id to id db.delete_primary_key('section_basesection')
def backwards(self, orm): db.delete_foreign_key('invapp_bagaction', 'bag_id') db.delete_primary_key('invapp_bag') # Deleting field 'Bag.id' db.delete_column(u'invapp_bag', u'id') db.execute('DROP SEQUENCE invapp_bag_id_seq') # Changing field 'Bag.bagname' db.alter_column(u'invapp_bag', 'bagname', self.gf('django.db.models.fields.TextField')(primary_key=True)) db.create_primary_key(u'invapp_bag', ['bagname']) db.delete_column(u'invapp_bagaction', 'bag_id') db.add_column(u'invapp_bagaction', 'bag_id', self.gf('django.db.models.fields.TextField')()) sql = db.foreign_key_sql('invapp_bagaction', 'bag_id', 'invapp_bag', 'bagname') db.execute(sql) db.create_unique('invapp_bagaction', ['bag_id', 'action', 'timestamp'])
def forwards(self, orm): # on some systmes this constraint is created. try: db.delete_foreign_key('tko_iteration_result', 'test_idx') except ValueError as e: logging.warning("Failed to delete foreign key on tko_interation_result, it likely doesn't exist") # Removing primary key constraint on tko_iteration_result, allowing more than one keval per test db.delete_primary_key('tko_iteration_result') db.create_index('tko_iteration_result', ['test_idx']) create_perf_view = """ CREATE OR REPLACE VIEW `tko_perf_view` AS SELECT `tko_tests`.`test_idx` AS `test_idx`, `tko_tests`.`job_idx` AS `job_idx`, `tko_tests`.`test` AS `test`, `tko_tests`.`subdir` AS `subdir`, `tko_tests`.`kernel_idx` AS `kernel_idx`, `tko_tests`.`status` AS `status`,`tko_tests`.`reason` AS `reason`, `tko_tests`.`machine_idx` AS `machine_idx`, `tko_tests`.`started_time` AS `test_started_time`, `tko_tests`.`finished_time` AS `test_finished_time`, `tko_jobs`.`tag` AS `job_tag`, `tko_jobs`.`label` AS `job_label`, `tko_jobs`.`username` AS `job_username`, `tko_jobs`.`queued_time` AS `job_queued_time`, `tko_jobs`.`started_time` AS `job_started_time`, `tko_jobs`.`finished_time` AS `job_finished_time`, `tko_machines`.`hostname` AS `machine_hostname`, `tko_machines`.`machine_group` AS `machine_group`, `tko_machines`.`owner` AS `machine_owner`, `tko_kernels`.`kernel_hash` AS `kernel_hash`, `tko_kernels`.`base` AS `kernel_base`, `tko_kernels`.`printable` AS `kernel_printable`, `tko_status`.`word` AS `status_word`, `tko_iteration_result`.`iteration` AS `iteration`, `tko_iteration_result`.`attribute` AS `iteration_key`, `tko_iteration_result`.`value` AS `iteration_value` FROM ( ( ( ( ( `tko_tests` join `tko_jobs` ON ((`tko_jobs`.`job_idx` = `tko_tests`.`job_idx`))) JOIN `tko_machines` ON ((`tko_machines`.`machine_idx` = `tko_jobs`.`machine_idx`)) ) JOIN `tko_kernels` ON ((`tko_kernels`.`kernel_idx` = `tko_tests`.`kernel_idx`)) ) JOIN `tko_status` on ((`tko_status`.`status_idx` = `tko_tests`.`status`)) ) JOIN `tko_iteration_result` ON ((`tko_iteration_result`.`test_idx` = `tko_tests`.`test_idx`)) ); """ db.execute(create_perf_view) create_perf_view_2 = """ CREATE OR REPLACE VIEW `tko_perf_view_2` AS SELECT `tko_tests`.`test_idx` AS `test_idx`, `tko_tests`.`job_idx` AS `job_idx`, `tko_tests`.`test` AS `test_name`, `tko_tests`.`subdir` AS `subdir`, `tko_tests`.`kernel_idx` AS `kernel_idx`, `tko_tests`.`status` AS `status_idx`, `tko_tests`.`reason` AS `reason`, `tko_tests`.`machine_idx` AS `machine_idx`, `tko_tests`.`started_time` AS `test_started_time`, `tko_tests`.`finished_time` AS `test_finished_time`, `tko_jobs`.`tag` AS `job_tag`, `tko_jobs`.`label` AS `job_name`, `tko_jobs`.`username` AS `job_owner`, `tko_jobs`.`queued_time` AS `job_queued_time`, `tko_jobs`.`started_time` AS `job_started_time`, `tko_jobs`.`finished_time` AS `job_finished_time`, `tko_machines`.`hostname` AS `hostname`, `tko_machines`.`machine_group` AS `platform`, `tko_machines`.`owner` AS `machine_owner`, `tko_kernels`.`kernel_hash` AS `kernel_hash`, `tko_kernels`.`base` AS `kernel_base`, `tko_kernels`.`printable` AS `kernel`, `tko_status`.`word` AS `status`, `tko_iteration_result`.`iteration` AS `iteration`, `tko_iteration_result`.`attribute` AS `iteration_key`, `tko_iteration_result`.`value` AS `iteration_value` FROM ( ( ( ( ( `tko_tests` LEFT JOIN `tko_jobs` ON ((`tko_jobs`.`job_idx` = `tko_tests`.`job_idx`)) ) LEFT JOIN `tko_machines` ON ((`tko_machines`.`machine_idx` = `tko_jobs`.`machine_idx`)) ) LEFT JOIN `tko_kernels` ON ((`tko_kernels`.`kernel_idx` = `tko_tests`.`kernel_idx`)) ) LEFT JOIN `tko_status` ON ((`tko_status`.`status_idx` = `tko_tests`.`status`)) ) LEFT JOIN `tko_iteration_result` ON ((`tko_iteration_result`.`test_idx` = `tko_tests`.`test_idx`)) ) """ db.execute(create_perf_view_2)
def forwards(self, orm): db.delete_primary_key('riksdagen_document') db.create_primary_key('riksdagen_document', ['hangar_id'])
def forwards(self, orm): # on some systmes this constraint is created. try: db.delete_foreign_key('tko_iteration_result', 'test_idx') except ValueError: logging.warning( "Failed to delete foreign key on tko_interation_result, it likely doesn't exist" ) # Removing primary key constraint on tko_iteration_result, allowing more than one keval per test db.delete_primary_key('tko_iteration_result') db.create_index('tko_iteration_result', ['test_idx']) create_perf_view = """ CREATE OR REPLACE VIEW `tko_perf_view` AS SELECT `tko_tests`.`test_idx` AS `test_idx`, `tko_tests`.`job_idx` AS `job_idx`, `tko_tests`.`test` AS `test`, `tko_tests`.`subdir` AS `subdir`, `tko_tests`.`kernel_idx` AS `kernel_idx`, `tko_tests`.`status` AS `status`,`tko_tests`.`reason` AS `reason`, `tko_tests`.`machine_idx` AS `machine_idx`, `tko_tests`.`started_time` AS `test_started_time`, `tko_tests`.`finished_time` AS `test_finished_time`, `tko_jobs`.`tag` AS `job_tag`, `tko_jobs`.`label` AS `job_label`, `tko_jobs`.`username` AS `job_username`, `tko_jobs`.`queued_time` AS `job_queued_time`, `tko_jobs`.`started_time` AS `job_started_time`, `tko_jobs`.`finished_time` AS `job_finished_time`, `tko_machines`.`hostname` AS `machine_hostname`, `tko_machines`.`machine_group` AS `machine_group`, `tko_machines`.`owner` AS `machine_owner`, `tko_kernels`.`kernel_hash` AS `kernel_hash`, `tko_kernels`.`base` AS `kernel_base`, `tko_kernels`.`printable` AS `kernel_printable`, `tko_status`.`word` AS `status_word`, `tko_iteration_result`.`iteration` AS `iteration`, `tko_iteration_result`.`attribute` AS `iteration_key`, `tko_iteration_result`.`value` AS `iteration_value` FROM ( ( ( ( ( `tko_tests` join `tko_jobs` ON ((`tko_jobs`.`job_idx` = `tko_tests`.`job_idx`))) JOIN `tko_machines` ON ((`tko_machines`.`machine_idx` = `tko_jobs`.`machine_idx`)) ) JOIN `tko_kernels` ON ((`tko_kernels`.`kernel_idx` = `tko_tests`.`kernel_idx`)) ) JOIN `tko_status` on ((`tko_status`.`status_idx` = `tko_tests`.`status`)) ) JOIN `tko_iteration_result` ON ((`tko_iteration_result`.`test_idx` = `tko_tests`.`test_idx`)) ); """ db.execute(create_perf_view) create_perf_view_2 = """ CREATE OR REPLACE VIEW `tko_perf_view_2` AS SELECT `tko_tests`.`test_idx` AS `test_idx`, `tko_tests`.`job_idx` AS `job_idx`, `tko_tests`.`test` AS `test_name`, `tko_tests`.`subdir` AS `subdir`, `tko_tests`.`kernel_idx` AS `kernel_idx`, `tko_tests`.`status` AS `status_idx`, `tko_tests`.`reason` AS `reason`, `tko_tests`.`machine_idx` AS `machine_idx`, `tko_tests`.`started_time` AS `test_started_time`, `tko_tests`.`finished_time` AS `test_finished_time`, `tko_jobs`.`tag` AS `job_tag`, `tko_jobs`.`label` AS `job_name`, `tko_jobs`.`username` AS `job_owner`, `tko_jobs`.`queued_time` AS `job_queued_time`, `tko_jobs`.`started_time` AS `job_started_time`, `tko_jobs`.`finished_time` AS `job_finished_time`, `tko_machines`.`hostname` AS `hostname`, `tko_machines`.`machine_group` AS `platform`, `tko_machines`.`owner` AS `machine_owner`, `tko_kernels`.`kernel_hash` AS `kernel_hash`, `tko_kernels`.`base` AS `kernel_base`, `tko_kernels`.`printable` AS `kernel`, `tko_status`.`word` AS `status`, `tko_iteration_result`.`iteration` AS `iteration`, `tko_iteration_result`.`attribute` AS `iteration_key`, `tko_iteration_result`.`value` AS `iteration_value` FROM ( ( ( ( ( `tko_tests` LEFT JOIN `tko_jobs` ON ((`tko_jobs`.`job_idx` = `tko_tests`.`job_idx`)) ) LEFT JOIN `tko_machines` ON ((`tko_machines`.`machine_idx` = `tko_jobs`.`machine_idx`)) ) LEFT JOIN `tko_kernels` ON ((`tko_kernels`.`kernel_idx` = `tko_tests`.`kernel_idx`)) ) LEFT JOIN `tko_status` ON ((`tko_status`.`status_idx` = `tko_tests`.`status`)) ) LEFT JOIN `tko_iteration_result` ON ((`tko_iteration_result`.`test_idx` = `tko_tests`.`test_idx`)) ) """ db.execute(create_perf_view_2)
def backwards(self, orm): db.delete_primary_key('thing_apikey') db.delete_column('thing_apikey', 'id') db.rename_column('thing_apikey', 'keyid', 'id') db.create_primary_key('thing_apikey', 'id')
def forwards(self, orm): # OMFG Get ready, we're going to change the primary key! # Doing bad things, disabling triggers db.execute("ALTER TABLE brainstorm_idea DISABLE TRIGGER ALL;") # Dropping foreign key constraint db.delete_foreign_key('brainstorm_idea', 'subsite_id') db.execute('DROP INDEX brainstorm_idea_subsite_id_like') db.delete_index('brainstorm_idea', ['subsite_id']) # Removing primary key on 'Subsite', fields ['slug'] db.delete_primary_key(u'brainstorm_subsite') # Adding primary key field 'Subsite.id' db.add_column( u'brainstorm_subsite', u'id', self.gf('django.db.models.fields.IntegerField')(blank=True, null=True)) # WOW. Have to manually create AutoFields. Thanks Django! db.execute('CREATE SEQUENCE brainstorm_subsite_id_seq;') db.execute( "UPDATE brainstorm_subsite SET id = nextval('brainstorm_subsite_id_seq');" ) db.execute( "ALTER TABLE brainstorm_subsite ALTER COLUMN id SET DEFAULT nextval('brainstorm_subsite_id_seq');" ) db.execute( 'ALTER SEQUENCE brainstorm_subsite_id_seq OWNED BY brainstorm_subsite.id;' ) db.execute( "SELECT setval('brainstorm_subsite_id_seq', q.i) FROM(SELECT MAX(id) i FROM brainstorm_subsite) q;" ) # Now make it the pk db.create_primary_key('brainstorm_subsite', ['id']) # Updating foreign key values db.execute('''UPDATE brainstorm_idea idea SET subsite_id = subsite.id FROM brainstorm_subsite subsite WHERE(idea.subsite_id = subsite.slug);''') # Casting the fk to an integer db.execute( "ALTER TABLE brainstorm_idea ALTER COLUMN subsite_id TYPE integer USING CAST(subsite_id AS integer);" ) # Re-adding foreign key constraint fk_sql = db.foreign_key_sql('brainstorm_idea', 'subsite_id', 'brainstorm_subsite', 'id') db.execute(fk_sql) # Changing field 'Subsite.slug' to a plain old slugfield db.alter_column( u'brainstorm_subsite', 'slug', self.gf('django.db.models.fields.SlugField')(max_length=50)) # Adding unique constraint on 'Subsite', fields ['slug'] db.create_unique(u'brainstorm_subsite', ['slug']) # Re-enabling triggers db.execute("ALTER TABLE brainstorm_idea ENABLE TRIGGER ALL;")