#5582 closed (worksforme)
Default manager and model init methods should allow raw field name arguments for foreign keys
Reported by: | 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 , 17 years ago
Triage Stage: | Unreviewed → Design decision needed |
---|
comment:2 by , 17 years ago
Resolution: | → worksforme |
---|---|
Status: | new → closed |
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 thedefaults
argument toget_or_create
.