#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 django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/046.89aca90261269d4e5edabfff30233151%40djangoproject.com.