diff options
| author | Michael Tänzer <neo@nhng.de> | 2015-06-07 02:05:36 +0200 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2015-06-30 18:27:42 -0400 |
| commit | 3bbaf84d6533fb61ac0038f2bbe52ee0d7b4fd10 (patch) | |
| tree | 215672c8af92ac82e9995e2cb1cb10f291745f79 /django | |
| parent | b64c0d4d613b5cabedbc9b847682fe14877537de (diff) | |
Fixed #18247 -- Added cast to NUMERIC for Decimals on sqlite
On sqlite the SUM() of a decimal column doesn't have a NUMERIC type so
when comparing it to a string literal (which a Decimal gets converted to
in Django) it is not compared as expected.
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/expressions.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index 43061933e6..3ace285704 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -507,6 +507,15 @@ class Func(Expression): template = template or self.extra.get('template', self.template) return template % self.extra, params + def as_sqlite(self, *args, **kwargs): + sql, params = self.as_sql(*args, **kwargs) + try: + if self.output_field.get_internal_type() == 'DecimalField': + sql = 'CAST(%s AS NUMERIC)' % sql + except FieldError: + pass + return sql, params + def copy(self): copy = super(Func, self).copy() copy.source_expressions = self.source_expressions[:] |
