Opened 17 years ago

Closed 17 years ago

Last modified 17 years ago

#5582 closed (worksforme)

Default manager and model init methods should allow raw field name arguments for foreign keys

Reported by: Simon Litchfield <simon@…> Owned by: nobody
Component: Database layer (models, ORM) Version: dev
Severity: Keywords:
Cc: Triage Stage: Design decision needed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I can do this --

profile = Profile(name='Example')
profile.user_id = 47
profile.save()

But not this --

profile = Profile(name='Example', user_id=47)
profile.save()

Also can't get_or_create, or do anything much with only user_id directly. Apparently I need to instantiate a User object just for the sake of it(?) Turns out either a big overhead (50+ extra queries on this particular page!) -or- a bunch of unnecessary code.

More importantly though, it seems at least a bit confusing and inconsistent, that I can access it by attribute but not by argument.

Surely it would be easy enough to allow fieldname_id as init/filter arguments on foreign keys. If anyone else agrees, I'll run up the patch?

Change History (3)

comment:1 by Simon Litchfield <simon@…>, 17 years ago

Triage Stage: UnreviewedDesign decision needed

comment:2 by James Bennett, 17 years ago

Resolution: worksforme
Status: newclosed

Passing the "_id"-style argument directly into the model constructor works for me on current trunk. Similarly, it works in create, and it works in the defaults argument to get_or_create.

comment:3 by Simon Litchfield <simon@…>, 17 years ago

Sorry, correction, see #5585

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