Opened 6 years ago

Closed 5 years ago

#15494 closed Bug (fixed)

Using only('pk') in related set raises FieldDoesNotExist

Reported by: anonymous Owned by: Sam Thompson
Component: Database layer (models, ORM) Version: 1.2
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: yes Patch needs improvement: yes
Easy pickings: UI/UX:

Description

This is my first ticket, apologies if this is known or I've missed something in my report.

With model A and model B, where model B has a fk to A:

A().b_set.all().only('pk')

Raises "FieldDoesNotExist: B has no field named 'pk'"

In my example I'm instantiating a new object for brevity. The behaviour is the same with a saved object.

I've attached a simple patch, however I couldn't get the testrunner working, so I couldn't write a full patch. Also, I expect this isn't the best method, but I don't know enough about the ORM to know of a better fix.

Attachments (2)

only_pk_related.diff (846 bytes) - added by sym.roe@… 6 years ago.
only_pk.diff (2.2 KB) - added by Sam Thompson 6 years ago.
Tests and better comments.

Download all attachments as: .zip

Change History (8)

Changed 6 years ago by sym.roe@…

Attachment: only_pk_related.diff added

comment:1 Changed 6 years ago by symroe

comment:2 Changed 6 years ago by anonymous

Needs tests: set
Patch needs improvement: set

comment:3 Changed 6 years ago by Russell Keith-Magee

Triage Stage: UnreviewedAccepted

comment:4 Changed 6 years ago by Sam Thompson

Owner: changed from nobody to Sam Thompson
Status: newassigned

Changed 6 years ago by Sam Thompson

Attachment: only_pk.diff added

Tests and better comments.

comment:5 Changed 6 years ago by Łukasz Rekucki

Severity: Normal
Type: Bug

comment:6 Changed 5 years ago by Malcolm Tredinnick

Resolution: fixed
Status: assignedclosed

In [16668]:

Allow "pk" as a field alias in QuerySet.only() calls.

Thanks to GDorn for the patch. Fixed #15494.

Note: See TracTickets for help on using tickets.
Back to Top