Opened 8 years ago

Closed 7 years ago

#14695 closed Bug (fixed)

Field's `name` kwarg gets paved over

Reported by: erikrose Owned by: nobody
Component: Database layer (models, ORM) Version: 1.2
Severity: Normal Keywords: dceu2011
Cc: Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


Field.set_attributes_from_name should [source:/django/trunk/django/db/models/fields/ set = name] only if is None. As things stand, any name=whatever kwarg we pass to a field on construction is obliterated by set_attributes_from_name. This means things like…

_category = models.IntegerField(db_column='category', name='category')

…end up with a get__category_display method (note the 2 underscores in a row) rather than a get_category_display. I've attached a quick but functional patch that fixes this; the tests (in 1.2.3, anyway) still all pass. One possible improvement might be to use get_attname rather than saying directly, but (1) I'm not sure what the layering intentions are in there and (2) it blew up in a hairly-looking way when I tried—so I wouldn't mind some clueful feedback about that.

FWIW, my use case is replacing my model's category attr with a descriptor so I can do some custom stuff on get. #3148 would make this unnecessary for me, but I could see that taking awhile to land.

Attachments (2)

field_name.diff (782 bytes) - added by erikrose 8 years ago.
Patch against Django 1.2.3
ticket14695.patch (2.6 KB) - added by Will Hardy 7 years ago.
Adding tests

Download all attachments as: .zip

Change History (10)

Changed 8 years ago by erikrose

Attachment: field_name.diff added

Patch against Django 1.2.3

comment:1 Changed 8 years ago by erikrose

Here's a proper link to the line that does the paving over: source:/django/trunk/django/db/models/fields/

comment:2 Changed 7 years ago by Russell Keith-Magee

milestone: 1.3
Needs tests: set
Patch needs improvement: set
Triage Stage: UnreviewedAccepted

comment:3 Changed 7 years ago by erikrose

Owner: changed from nobody to erikrose

comment:4 Changed 7 years ago by James Addison

Severity: Normal
Type: Bug

comment:5 Changed 7 years ago by Will Hardy

Easy pickings: unset
Owner: changed from erikrose to Will Hardy
Status: newassigned
UI/UX: unset

Changed 7 years ago by Will Hardy

Attachment: ticket14695.patch added

Adding tests

comment:6 Changed 7 years ago by Will Hardy

Keywords: dceu2011 added
Needs tests: unset
Owner: changed from Will Hardy to nobody
Patch needs improvement: unset
Status: assignednew

comment:7 Changed 7 years ago by Jonas Obrist

Triage Stage: AcceptedReady for checkin

comment:8 Changed 7 years ago by Jannis Leidel

Resolution: fixed
Status: newclosed

In [16614]:

(The changeset message doesn't reference this ticket)

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