@@ -161,9 +161,14 @@ def _alter_column_null_sql(self, model, old_field, new_field):
161161 [],
162162 )
163163
164- def _alter_column_type_sql (self , model , old_field , new_field , new_type ):
165- new_type = self ._set_field_new_type_null_status (old_field , new_type )
166- return super ()._alter_column_type_sql (model , old_field , new_field , new_type )
164+ if django_version >= (4 , 2 ):
165+ def _alter_column_type_sql (self , model , old_field , new_field , new_type , old_collation , new_collation ):
166+ new_type = self ._set_field_new_type_null_status (old_field , new_type )
167+ return super ()._alter_column_type_sql (model , old_field , new_field , new_type , old_collation , new_collation )
168+ else :
169+ def _alter_column_type_sql (self , model , old_field , new_field , new_type ):
170+ new_type = self ._set_field_new_type_null_status (old_field , new_type )
171+ return super ()._alter_column_type_sql (model , old_field , new_field , new_type )
167172
168173 def alter_unique_together (self , model , old_unique_together , new_unique_together ):
169174 """
@@ -443,7 +448,12 @@ def _alter_field(self, model, old_field, new_field, old_type, new_type,
443448 post_actions = []
444449 # Type change?
445450 if old_type != new_type :
446- fragment , other_actions = self ._alter_column_type_sql (model , old_field , new_field , new_type )
451+ if django_version >= (4 , 2 ):
452+ fragment , other_actions = self ._alter_column_type_sql (
453+ model , old_field , new_field , new_type , old_collation = None , new_collation = None
454+ )
455+ else :
456+ fragment , other_actions = self ._alter_column_type_sql (model , old_field , new_field , new_type )
447457 actions .append (fragment )
448458 post_actions .extend (other_actions )
449459 # Drop unique constraint, SQL Server requires explicit deletion
@@ -683,9 +693,14 @@ def _alter_field(self, model, old_field, new_field, old_type, new_type,
683693 for old_rel , new_rel in rels_to_update :
684694 rel_db_params = new_rel .field .db_parameters (connection = self .connection )
685695 rel_type = rel_db_params ['type' ]
686- fragment , other_actions = self ._alter_column_type_sql (
687- new_rel .related_model , old_rel .field , new_rel .field , rel_type
688- )
696+ if django_version >= (4 , 2 ):
697+ fragment , other_actions = self ._alter_column_type_sql (
698+ new_rel .related_model , old_rel .field , new_rel .field , rel_type , old_collation = None , new_collation = None
699+ )
700+ else :
701+ fragment , other_actions = self ._alter_column_type_sql (
702+ new_rel .related_model , old_rel .field , new_rel .field , rel_type
703+ )
689704 # Drop related_model indexes, so it can be altered
690705 index_names = self ._db_table_constraint_names (old_rel .related_model ._meta .db_table , index = True )
691706 for index_name in index_names :
@@ -1262,8 +1277,12 @@ def add_constraint(self, model, constraint):
12621277 (constraint .condition .connector , constraint .name ))
12631278 super ().add_constraint (model , constraint )
12641279
1265- def _collate_sql (self , collation ):
1266- return ' COLLATE ' + collation
1280+ if django_version >= (4 , 2 ):
1281+ def _collate_sql (self , collation , old_collation = None , table_name = None ):
1282+ return ' COLLATE ' + collation if collation else ""
1283+ else :
1284+ def _collate_sql (self , collation ):
1285+ return ' COLLATE ' + collation
12671286
12681287 def _create_index_name (self , table_name , column_names , suffix = "" ):
12691288 index_name = super ()._create_index_name (table_name , column_names , suffix )
0 commit comments