#30770: annotating TruncBase on ExpressionWrapper for date arithmetic, causes
unnecessary placeholder "%s" escaping to "%%s"
-------------------------------------+-------------------------------------
Reporter: Jurgis | Owner: nobody
Pralgauskis |
Type: Bug | Status: new
Component: Database | Version: 1.11
layer (models, ORM) | Keywords: TruncBase, DateTime
Severity: Normal | arithmetics,
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
I tried:
{{{#!python
from django.db.models import F, DateTimeField, ExpressionWrapper
from django.db.models.functions import Cast, Least, Greatest, Now,
Coalesce, ExtractWeekDay, TruncDay
User.objects
.annotate(trial_end=TruncDay(ExpressionWrapper(F('date_joined')+
timedelta(days=30), output_field=DateTimeField())))
.values('id', 'date_joined', 'trial_end')[:3]
)
}}}
and got
{{{
Traceback (most recent call last):
File "<input>", line 3, in <module>
File "lib/python3.4/site-packages/django/db/models/query.py", line 226,
in __repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "lib/python3.4/site-packages/django/db/models/query.py", line 250,
in __iter__
self._fetch_all()
File "lib/python3.4/site-packages/django/db/models/query.py", line 1118,
in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "lib/python3.4/site-packages/django/db/models/query.py", line 106,
in __iter__
for row in compiler.results_iter():
File "lib/python3.4/site-packages/django/db/models/sql/compiler.py",
line 836, in results_iter
results = self.execute_sql(MULTI)
File "lib/python3.4/site-packages/django/db/models/sql/compiler.py",
line 894, in execute_sql
raise original_exception
File "lib/python3.4/site-packages/django/db/models/sql/compiler.py",
line 884, in execute_sql
cursor.execute(sql, params)
File "lib/python3.4/site-packages/django/db/backends/utils.py", line 80,
in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "lib/python3.4/site-packages/django/db/backends/utils.py", line 65,
in execute
return self.cursor.execute(sql, params)
TypeError: not all arguments converted during string formatting
}}}
and
{{{#!python
qs.query.sql_with_params()[0]
}}}
shows
{{{#!sql
'SELECT "ta_account"."id", "ta_account"."date_joined", DATE_TRUNC(\'day\',
("ta_account"."date_joined" + %%s) AT TIME ZONE %s) AS "trial_end" FROM
"ta_account" LIMIT 3'
}}}
notice **%%s** -- that causes problem..
--
Ticket URL: <https://code.djangoproject.com/ticket/30770>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/046.89aca90261269d4e5edabfff30233151%40djangoproject.com.