# -*- coding: utf-8 -*- # Generated by Django 1.10.2 on 2016-12-20 08:10 from __future__ import unicode_literals from django.db import migrations, models UNIQUE_SLUG_MODELS = ['Continent', 'Country', 'Region', 'Subregion', 'District', 'City', 'PostalCode', 'AlternativeName'] class Migration(migrations.Migration): dependencies = [ ('geo', '0009_add_slug_fields_to_models'), ] operations = [ migrations.AlterField( model_name='country', name='code', field=models.CharField(db_index=True, max_length=2, unique=True), ), migrations.AlterField( model_name='country', name='code3', field=models.CharField(db_index=True, max_length=3, unique=True), ), migrations.AlterUniqueTogether( name='city', unique_together=set([('country', 'region', 'subregion', 'id', 'name')]), ), migrations.AlterUniqueTogether( name='district', unique_together=set([('city', 'name')]), ), migrations.AlterUniqueTogether( name='postalcode', unique_together=set([ ('country', 'region_name', 'subregion_name', 'district_name', 'name', 'id', 'code'), ('country', 'region', 'subregion', 'city', 'district', 'name', 'id', 'code'), ]), ), migrations.AlterUniqueTogether( name='region', unique_together=set([('country', 'name')]), ), migrations.AlterUniqueTogether( name='subregion', unique_together=set([('region', 'id', 'name')]), ), ] # The previous migration created the slug field as # # CharField(max_length=255, unique=True) # # but I removed the unique=True for new users. This checks the previous # state of the slug field on the models, and if the field has unique=True # (eg: existing users), it removes the unique attribute. For slug fields # that don't have unique=True (eg: new users), it skips them. def database_forwards(self, app_label, schema_editor, from_state, to_state): # Before we do any database operations, add the appropriate slug field # modifications to the migration operations. self.operations + [ migrations.AlterField( model_name=model_name.lower(), name='slug', field=models.CharField(max_length=255)) for model_name in UNIQUE_SLUG_MODELS # This is the check that matters. It checks the result of the # previous 0009 migration (which may or may not have unique=True # set on slug fields) for the unique attribute, and skips it if # they don't. if from_state.apps.get_model(app_label, self.model_name)._meta.get_field('slug').unique ] super(Migration, self).database_forwards(app_label, schema_editor, from_state, to_state)