Unable to use fields from prefetch_related() in only() and defer()
|Reported by:||alexpirine||Owned by:||nobody|
|Component:||Database layer (models, ORM)||Version:||1.5|
|Severity:||Normal||Keywords:||defer only ForeignKey reverse relationship|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
If I run the following query, I get the same error as seen in #14694:
I guess it is not really a bug, as using only() and defer() in combination with prefetch_related() is not documented (documentation only mentions the use of select_related() with defer()).
But it could be a useful feature: is there a reason to support select_related() but not prefetch_related()?
I hope that an improvement of the patch for #14694 can enable this feature.
P.S. I wasn't able to fix it by myself, due to my lack of understanding of how django.db.models.sql.query.deferred_to_data() works. Simply removing and field.field.unique in django.db.models.sql.query.is_reverse_o2o() makes the error message disappear, but the instructions in only() remain ignored.
Change History (5)
comment:1 Changed 3 years ago by as@…
- Needs documentation unset
- Needs tests unset
- Patch needs improvement unset
comment:4 Changed 3 years ago by akaariai
- Resolution set to wontfix
- Status changed from new to closed