Opened 13 years ago
Closed 13 years ago
#17678 closed Bug (fixed)
Model._meta proxy_for_model set up incorrectly
Reported by: | Anssi Kääriäinen | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.3 |
Severity: | Normal | Keywords: | |
Cc: | Anssi Kääriäinen | Triage Stage: | Unreviewed |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
There are some places in the code which assume that proxy_for_model creates a proxy chain. That is, if you have models:
A Proxy(A) ProxyProxy(Proxy)
the expected result is that ProxyProxy._meta.proxy_for_model == Proxy, but this isn't true. One place which makes this proxy-chain mistake is the very place that sets up the proxy_for_model so this seems like a clear bug.
In the attached patch I added ._meta.concrete_class, which is always the concrete class of the model. This simplifies code in some places. In addition, the proxy_for_model correctly creates a proxy chain now.
I think the proxy_for_model error was responsible for one bug in admin, but I haven't verified that there was a bug (so, no tests). In addition there is one place in sql/query.py which is working now as it was before, but I am not sure if the before behavior was in fact correct. Neither of these should be this ticket's problems.
The bug is present in at least 1.3, maybe even before.
Attachments (1)
Change History (2)
by , 13 years ago
Attachment: | 17678.diff added |
---|
comment:1 by , 13 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
In [17573]: