'Run a migration forwards.'

def apply_migration(self, state, migration, fake=False, fake_initial=False):

    if self.progress_callback:
        self.progress_callback('apply_start', migration, fake)
    if (not fake):
        if fake_initial:
            (applied, state) = self.detect_soft_applied(state, migration)
            if applied:
                fake = True
        if (not fake):
            with self.connection.schema_editor(atomic=migration.atomic) as schema_editor:
                state = migration.apply(state, schema_editor)
    if migration.replaces:
        for (app_label, name) in migration.replaces:
            self.recorder.record_applied(app_label, name)
    else:
        self.recorder.record_applied(migration.app_label, migration.name)
    if self.progress_callback:
        self.progress_callback('apply_success', migration, fake)
    return state
