From 1383dc75eb8171c43ef6a19cac3b9f57f549ccc4 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Fri, 3 Nov 2023 16:28:04 +0100 Subject: [PATCH] [5.0.x] Fixed #34941 -- Fixed fetching decimal db_defaults for DecimalFields on Oracle. This is a long standing bug in bc91f27a86090b4c688b56cd4e37f95eebe6e969 that began manifesting in 7414704e88d73dafbcfbb85f9bc54cb6111439d3. Backport of 656192c2c96bb955a399d92f381e38fe2254fe17 from main --- django/db/backends/oracle/features.py | 6 ------ django/db/backends/oracle/utils.py | 3 ++- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/django/db/backends/oracle/features.py b/django/db/backends/oracle/features.py index afc53019cd..8a02e098d6 100644 --- a/django/db/backends/oracle/features.py +++ b/django/db/backends/oracle/features.py @@ -119,12 +119,6 @@ class DatabaseFeatures(BaseDatabaseFeatures): "Oracle doesn't support comparing NCLOB to NUMBER.": { "generic_relations_regress.tests.GenericRelationTests.test_textlink_filter", }, - "DecimalField.db_default doesn't return decimal.Decimal instances on Oracle " - "(#34941).": { - "field_defaults.tests.DefaultTests.test_field_db_defaults_returning", - "migrations.test_operations.OperationTests." - "test_alter_field_change_nullable_to_decimal_database_default_not_null", - }, } django_test_expected_failures = { # A bug in Django/oracledb with respect to string handling (#23843). diff --git a/django/db/backends/oracle/utils.py b/django/db/backends/oracle/utils.py index 318a265645..930b8e0918 100644 --- a/django/db/backends/oracle/utils.py +++ b/django/db/backends/oracle/utils.py @@ -1,4 +1,5 @@ import datetime +import decimal from .base import Database @@ -23,7 +24,7 @@ class InsertVar: "FloatField": Database.NATIVE_FLOAT, "DateTimeField": Database.TIMESTAMP, "DateField": Database.Date, - "DecimalField": Database.NUMBER, + "DecimalField": decimal.Decimal, } def __init__(self, field):