summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-04-01 18:32:57 +0200
committerClaude Paroz <claude@2xlibre.net>2013-04-01 18:32:57 +0200
commitdcf563071fad7fe286c6921c949639fc99f51351 (patch)
treec24ab55dff30bb714254d2d3fb279db1312efce2
parent51028f50b624efae273dcbe828ec80c1846c74dc (diff)
Fixed #5014 -- Guessed max_digits and decimal_places for SQLite
Decimal is treated as float on SQLite, hence inspectdb can only guess max_digits and decimal_places arguments.
-rw-r--r--django/core/management/commands/inspectdb.py11
-rw-r--r--tests/inspectdb/tests.py5
2 files changed, 12 insertions, 4 deletions
diff --git a/django/core/management/commands/inspectdb.py b/django/core/management/commands/inspectdb.py
index 42cc9c5dfe..dc26bb11d2 100644
--- a/django/core/management/commands/inspectdb.py
+++ b/django/core/management/commands/inspectdb.py
@@ -213,8 +213,15 @@ class Command(NoArgsCommand):
field_params['max_length'] = int(row[3])
if field_type == 'DecimalField':
- field_params['max_digits'] = row[4]
- field_params['decimal_places'] = row[5]
+ if row[4] is None or row[5] is None:
+ field_notes.append(
+ 'max_digits and decimal_places have been guessed, as this '
+ 'database handles decimal fields as float')
+ field_params['max_digits'] = row[4] if row[4] is not None else 10
+ field_params['decimal_places'] = row[5] if row[5] is not None else 5
+ else:
+ field_params['max_digits'] = row[4]
+ field_params['decimal_places'] = row[5]
return field_type, field_params, field_notes
diff --git a/tests/inspectdb/tests.py b/tests/inspectdb/tests.py
index 1544955476..39685484a2 100644
--- a/tests/inspectdb/tests.py
+++ b/tests/inspectdb/tests.py
@@ -55,8 +55,9 @@ class InspectDBTestCase(TestCase):
assertFieldType('date_field', "models.DateField()")
assertFieldType('date_time_field', "models.DateTimeField()")
if connection.vendor == 'sqlite':
- # Ticket #5014
- assertFieldType('decimal_field', "models.DecimalField(max_digits=None, decimal_places=None)")
+ # Guessed arguments, see #5014
+ assertFieldType('decimal_field', "models.DecimalField(max_digits=10, decimal_places=5) "
+ "# max_digits and decimal_places have been guessed, as this database handles decimal fields as float")
else:
assertFieldType('decimal_field', "models.DecimalField(max_digits=6, decimal_places=1)")
assertFieldType('email_field', "models.CharField(max_length=75)")