'Make ALTER TYPE with SERIAL make sense.'

def _alter_column_type_sql(self, model, old_field, new_field, new_type):

    table = model._meta.db_table
    if (new_type.lower() in ('serial', 'bigserial')):
        column = new_field.column
        sequence_name = ('%s_%s_seq' % (table, column))
        col_type = ('integer' if (new_type.lower() == 'serial') else 'bigint')
        return (((self.sql_alter_column_type % {'column': self.quote_name(column), 'type': col_type}), []), [((self.sql_delete_sequence % {'sequence': self.quote_name(sequence_name)}), []), ((self.sql_create_sequence % {'sequence': self.quote_name(sequence_name)}), []), ((self.sql_alter_column % {'table': self.quote_name(table), 'changes': (self.sql_alter_column_default % {'column': self.quote_name(column), 'default': ("nextval('%s')" % self.quote_name(sequence_name))})}), []), ((self.sql_set_sequence_max % {'table': self.quote_name(table), 'column': self.quote_name(column), 'sequence': self.quote_name(sequence_name)}), [])])
    else:
        return super()._alter_column_type_sql(model, old_field, new_field, new_type)
