Вам нужно делать такую миграцию в 4 этапа:
- создаете колонку с типом datetime с временным имененм
- из колонки с типом string переносите данные в колонки с datetime
- удаляете колонку с типом string
- колонку с типом datetime переименовываете в нужное имя
И относительно вашего кода по переносу данных - так делать не рекомендуется потому что во-первых это крайне медленно, во вторых миграция зависит от класса. Представьте, через некоторое время вы доработаете класс(например переименуете аттрибут query_date) и ваша миграция перестанет работать т.к. она рассчитывает на то что код класса Page не поменялся, а он поменялся.
Для того чтобы миграции не зависели от кода классов и не отваливались со временем нужно писать их на SQL.
execute('update pages set new_query_date = STR_TO_DATE(query_date)')