#27544: F() Expressions updating dates in .update() field fails
-------------------------------------+-------------------------------------
     Reporter:  Gary Graham          |                    Owner:  nobody
         Type:  Bug                  |                   Status:  new
    Component:  Database layer       |                  Version:  1.10
  (models, ORM)                      |
     Severity:  Normal               |               Resolution:
     Keywords:  F()                  |             Triage Stage:
                                     |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):

 * component:  Uncategorized => Database layer (models, ORM)


Old description:

> Upon upgrading from 1.8 -> 1.10, I noticed that some code I had written
> now threw an error.  Specifically, attempting to update datetime field's
> via F expression.
>
> Bisect log, about 3000 commits back -> https://dpaste.de/HGYb
>
> Branch with test showing regression ->
> https://github.com/tadgh/django/commit/c31133261c68b10525b8e3b34e6895a0c6ece4d0
>
> Apparent first commit where regression occurs ->
> https://github.com/django/django/pull/4601/commits/ed83881e648771d22658f21b939f66e75c499864
>
> Stacktrace from failure -> https://dpaste.de/DkSV

New description:

 Upon upgrading from 1.8 -> 1.10, I noticed that some code I had written
 now threw an error.  Specifically, attempting to update datetime field's
 via F expression.

 Branch with test showing regression ->
 https://github.com/tadgh/django/commit/c31133261c68b10525b8e3b34e6895a0c6ece4d0

 Bisected to ed83881e648771d22658f21b939f66e75c499864: Fixed #23820 --
 Supported per-database time zone.

 Stacktrace from failure:
 {{{
 ======================================================================
 ERROR: test_F_expression_fails (timezones.test_regression.ProveRegression)
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/home/tadgh/Projects/django/tests/timezones/test_regression.py",
 line 22, in test_F_expression_fails
     self.timestamp.refresh_from_db()
   File "/home/tadgh/Projects/django/django/db/models/base.py", line 585,
 in refresh_from_db
     db_instance = db_instance_qs.get()
   File "/home/tadgh/Projects/django/django/db/models/query.py", line 381,
 in get
     num = len(clone)
   File "/home/tadgh/Projects/django/django/db/models/query.py", line 240,
 in __len__
     self._fetch_all()
   File "/home/tadgh/Projects/django/django/db/models/query.py", line 1061,
 in _fetch_all
     self._result_cache = list(self.iterator())
   File "/home/tadgh/Projects/django/django/db/models/query.py", line 68,
 in __iter__
     for row in compiler.results_iter(results):
   File "/home/tadgh/Projects/django/django/db/models/sql/compiler.py",
 line 806, in results_iter
     row = self.apply_converters(row, converters)
   File "/home/tadgh/Projects/django/django/db/models/sql/compiler.py",
 line 790, in apply_converters
     value = converter(value, expression, self.connection,
 self.query.context)
   File
 "/home/tadgh/Projects/django/django/db/backends/sqlite3/operations.py",
 line 159, in convert_datetimefield_value
     value = timezone.make_aware(value, self.connection.timezone)
   File "/home/tadgh/Projects/django/django/utils/timezone.py", line 364,
 in make_aware
     return timezone.localize(value, is_dst=is_dst)
   File "/home/tadgh/.venvs/django_env/lib/python3.4/site-
 packages/pytz/__init__.py", line 227, in localize
     raise ValueError('Not naive datetime (tzinfo is already set)')
 ValueError: Not naive datetime (tzinfo is already set)
 }}}

--

--
Ticket URL: <https://code.djangoproject.com/ticket/27544#comment:1>
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 post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/063.a14c60269e126c47fcd74921488120a7%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to