[Django] #21144: Not possible to update foreign key by id for a queryset

35 views
Skip to first unread message

Django

unread,
Sep 22, 2013, 6:16:00 PM9/22/13
to django-...@googlegroups.com
#21144: Not possible to update foreign key by id for a queryset
-------------------------------------+-------------------------------------
Reporter: dakinsloss@… | Owner: nobody
Type: | Status: new
Cleanup/optimization | Version: 1.5
Component: Database layer | Keywords: update, related model,
(models, ORM) | performance
Severity: Normal | Has patch: 0
Triage Stage: Unreviewed | UI/UX: 0
Easy pickings: 0 |
-------------------------------------+-------------------------------------
Attempting to minimize queries when updating list of ModelA instances that
have foreign keys to ModelB, and I know the ids of the new ModelB
instances I want to use for the instances of ModelA (that I only have the
id for, not the instance).

Trying:
ModelA.objects.filter(pk=id_of_a_instance).update(b_id=id_of_b_instance)
which yields 'FieldNameDoesNotExist' because 'get_field_by_name' only has
'b' as a field name for ModelA, not b_id (which is strange given that is
what is actually stored).

Then I try:
ModelA.objects.filter(pk=id_of_a_instance).update(b=id_of_b_instance),
which says it needs an instance of ModelB, not a number.

Which means I will be stuck with an extra query:
model_b_list = list(ModelB.objects.filter(id_in=[list of ids for a
instances])
and then have to iterate through the ModelA instances and assign the
actual ModelB instances

--
Ticket URL: <https://code.djangoproject.com/ticket/21144>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Sep 22, 2013, 6:31:53 PM9/22/13
to django-...@googlegroups.com
#21144: Not possible to update foreign key by id for a queryset
-------------------------------------+-------------------------------------
Reporter: dakinsloss@… | Owner: nobody
Type: | Status: closed
Cleanup/optimization | Version: 1.5
Component: Database layer | Resolution: invalid
(models, ORM) | Triage Stage:
Severity: Normal | Unreviewed
Keywords: update, related | Needs documentation: 0
model, performance | Patch needs improvement: 0
Has patch: 0 | UI/UX: 0
Needs tests: 0 |
Easy pickings: 0 |
-------------------------------------+-------------------------------------
Changes (by dakinsloss@…):

* status: new => closed
* needs_docs: => 0
* resolution: => invalid
* needs_tests: => 0
* needs_better_patch: => 0


Comment:

My mistake--this should not have been submitted, was still debugging and
this is not an issue.

--
Ticket URL: <https://code.djangoproject.com/ticket/21144#comment:1>

Django

unread,
Jun 6, 2014, 5:27:29 AM6/6/14
to django-...@googlegroups.com
#21144: Not possible to update foreign key by id for a queryset
-------------------------------------+-------------------------------------
Reporter: dakinsloss@… | Owner: nobody
Type: | Status: closed
Cleanup/optimization | Version: 1.5

Component: Database layer | Resolution: invalid
(models, ORM) | Triage Stage:
Severity: Normal | Unreviewed
Keywords: update, related | Needs documentation: 0
model, performance | Patch needs improvement: 0
Has patch: 0 | UI/UX: 0
Needs tests: 0 |
Easy pickings: 0 |
-------------------------------------+-------------------------------------

Comment (by mbhagya@…):

Sorry but what happened to this bug? Is this fixed in a later version?
Because I can still see this in 1.5.

--
Ticket URL: <https://code.djangoproject.com/ticket/21144#comment:2>

Django

unread,
Jan 28, 2015, 2:22:13 PM1/28/15
to django-...@googlegroups.com
#21144: Not possible to update foreign key by id for a queryset
-------------------------------------+-------------------------------------
Reporter: dakinsloss@… | Owner: nobody
Type: | Status: closed
Cleanup/optimization |
Component: Database layer | Version: 1.5
(models, ORM) |
Severity: Normal | Resolution: invalid
Keywords: update, related | Triage Stage:
model, performance | Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by Microserf):

Could I ask for additional clarifications regarding why this issue was
closed and set to invalid? This seems like a legitimate use case to
support, no?

--
Ticket URL: <https://code.djangoproject.com/ticket/21144#comment:3>

Django

unread,
Jan 28, 2015, 2:28:09 PM1/28/15
to django-...@googlegroups.com
#21144: Not possible to update foreign key by id for a queryset
-------------------------------------+-------------------------------------
Reporter: dakinsloss@… | Owner: nobody
Type: | Status: new
Cleanup/optimization |
Component: Database layer | Version: 1.5
(models, ORM) |
Severity: Normal | Resolution:
Keywords: update, related | Triage Stage: Accepted
model, performance |

Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by carljm):

* status: closed => new
* resolution: invalid =>
* stage: Unreviewed => Accepted


Comment:

Looks like the original reporter closed it without much explanation. I'm
reopening, because I agree this is a valid case and should be supported
somehow (I think probably by accepting raw IDs for an FK field in
`update`).

--
Ticket URL: <https://code.djangoproject.com/ticket/21144#comment:4>

Django

unread,
Apr 13, 2015, 6:07:20 PM4/13/15
to django-...@googlegroups.com
#21144: Not possible to update foreign key by id for a queryset
-------------------------------------+-------------------------------------
Reporter: dakinsloss@… | Owner: vaskalas
Type: | Status: assigned

Cleanup/optimization |
Component: Database layer | Version: 1.5
(models, ORM) |
Severity: Normal | Resolution:
Keywords: update, related | Triage Stage: Accepted
model, performance |
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by vaskalas):

* owner: nobody => vaskalas
* status: new => assigned


--
Ticket URL: <https://code.djangoproject.com/ticket/21144#comment:5>

Django

unread,
Apr 13, 2015, 6:23:52 PM4/13/15
to django-...@googlegroups.com
#21144: Not possible to update foreign key by id for a queryset
-------------------------------------+-------------------------------------
Reporter: dakinsloss@… | Owner: vaskalas
Type: | Status: closed

Cleanup/optimization |
Component: Database layer | Version: 1.5
(models, ORM) |
Severity: Normal | Resolution: fixed

Keywords: update, related | Triage Stage: Accepted
model, performance |
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by vaskalas):

* status: assigned => closed
* resolution: => fixed


Comment:

Issue was fixed in commit c21e86ab9e3e5ebd6d245d038cb0cb352cd84c3a. Added
unit tests to verify fix in https://github.com/django/django/pull/4499

--
Ticket URL: <https://code.djangoproject.com/ticket/21144#comment:6>

Django

unread,
Apr 14, 2015, 10:07:17 AM4/14/15
to django-...@googlegroups.com
#21144: Not possible to update foreign key by id for a queryset
-------------------------------------+-------------------------------------
Reporter: dakinsloss@… | Owner: vaskalas
Type: | Status: closed
Cleanup/optimization |
Component: Database layer | Version: 1.5
(models, ORM) |
Severity: Normal | Resolution: fixed
Keywords: update, related | Triage Stage: Accepted
model, performance |
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------

Comment (by vaskalas):

The unit test was added actually added in this commit,
https://github.com/django/django/commit/e01b5a5823fa06a63382f87472978a16c77048d2

--
Ticket URL: <https://code.djangoproject.com/ticket/21144#comment:7>

Reply all
Reply to author
Forward
0 new messages