{{{
ProgrammingError Traceback (most recent call
last)
<ipython-input-1-29e48364245c> in <module>()
----> 1 MyModel.objects.causing_problems()
/usr/src/app/apps/myapp/managers.py in causing_problems(self)
833 ).update(
--> 834 my_field=F('my_annotated_field'),
835 )
836
/usr/src/app/apps/django/db/models/query.py in update(self, **kwargs)
645 query._annotations = None
646 with transaction.atomic(using=self.db, savepoint=False):
--> 647 rows = query.get_compiler(self.db).execute_sql(CURSOR)
648 self._result_cache = None
649 return rows
/usr/src/app/apps/django/db/models/sql/compiler.py in execute_sql(self,
result_type)
1189 related queries are not available.
1190 """
-> 1191 cursor = super(SQLUpdateCompiler,
self).execute_sql(result_type)
1192 try:
1193 rows = cursor.rowcount if cursor else 0
/usr/src/app/apps/django/db/models/sql/compiler.py in execute_sql(self,
result_type, chunked_fetch)
884 # silencing when dropping Python 2 compatibility.
885 pass
--> 886 raise original_exception
887
888 if result_type == CURSOR:
ProgrammingError: missing FROM-clause entry for table "myapp_mymodel"
LINE 1: ...false END, "a_field" = CASE WHEN CASE WHEN ("myapp_my...
}}}
Spent a while trying to debug where it was going wrong, ended up narrowing
down the problem to trying to update a field using an `F` expression on an
annotated field which included a join in it. I'm not sure if better error
message would have helped in my case but in the much simpler test attached
it'd be usfeul if the first and second assertions raised the same or
similar error message.
--
Ticket URL: <https://code.djangoproject.com/ticket/28408>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* Attachment "unclear_f_annotations_error_message_failing_test.diff"
added.
* owner: (none) => nobody
* type: Uncategorized => Bug
* component: Error reporting => Database layer (models, ORM)
* stage: Unreviewed => Accepted
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:1>
Comment (by Can Sarıgöl):
hi, I tried to fix on version 2.
[https://github.com/django/django/pull/11129 PR]
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:2>
* cc: Can Sarıgöl (added)
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:3>
* has_patch: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:4>
* needs_docs: 0 => 1
* version: 1.11 => master
Old description:
New description:
it'd be useful if the first and second assertions raised the same or
similar error message.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:5>
* owner: nobody => Can Sarıgöl
* status: new => assigned
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:6>
* needs_docs: 1 => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:7>
* needs_better_patch: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:8>
* needs_better_patch: 1 => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:9>
Comment (by felixxm):
Original ticket #26539.
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:10>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"f03b7bd11461e8b525c27d5344f8cd3a21c9565e" f03b7bd1]:
{{{
#!CommitTicketReference repository=""
revision="f03b7bd11461e8b525c27d5344f8cd3a21c9565e"
Fixed #28408 -- Added error message when updating with annotated
expressions on joined fields.
Co-Authored-By: Simon Charette <chare...@gmail.com>
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/28408#comment:11>