mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #29569 -- Fixed Cast() with AutoField and BigAutoField.
This commit is contained in:
		| @@ -18,6 +18,8 @@ class DatabaseOperations(BaseDatabaseOperations): | ||||
|         'PositiveIntegerField': (0, 4294967295), | ||||
|     } | ||||
|     cast_data_types = { | ||||
|         'AutoField': 'signed integer', | ||||
|         'BigAutoField': 'signed integer', | ||||
|         'CharField': 'char(%(max_length)s)', | ||||
|         'TextField': 'char', | ||||
|         'IntegerField': 'signed integer', | ||||
|   | ||||
| @@ -52,6 +52,8 @@ END; | ||||
|     # Oracle doesn't support string without precision; use the max string size. | ||||
|     cast_char_field_without_max_length = 'NVARCHAR2(2000)' | ||||
|     cast_data_types = { | ||||
|         'AutoField': 'NUMBER(11)', | ||||
|         'BigAutoField': 'NUMBER(19)', | ||||
|         'TextField': cast_char_field_without_max_length, | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -8,6 +8,10 @@ from django.db.backends.base.operations import BaseDatabaseOperations | ||||
| class DatabaseOperations(BaseDatabaseOperations): | ||||
|     cast_char_field_without_max_length = 'varchar' | ||||
|     explain_prefix = 'EXPLAIN' | ||||
|     cast_data_types = { | ||||
|         'AutoField': 'integer', | ||||
|         'BigAutoField': 'bigint', | ||||
|     } | ||||
|  | ||||
|     def unification_cast_sql(self, output_field): | ||||
|         internal_type = output_field.get_internal_type() | ||||
|   | ||||
| @@ -39,6 +39,8 @@ class CastTests(TestCase): | ||||
|  | ||||
|     def test_cast_to_integer(self): | ||||
|         for field_class in ( | ||||
|             models.AutoField, | ||||
|             models.BigAutoField, | ||||
|             models.IntegerField, | ||||
|             models.BigIntegerField, | ||||
|             models.SmallIntegerField, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user