Open pgammans opened 1 year ago
@pgammans Thanks, this seems to be very useful improvement. Could you please rebase the code so that the tests would run against the current master?
Also I thing part of this PR should be change of documentation to reflect this, e.g.: https://django-polymorphic.readthedocs.io/en/stable/advanced.html?highlight=select_related#restrictions-caveats
it will be really nice to have this.
there seems to be some minor formatting issues in the latest commits. @pgammans would it be possible to fix them?
Are you going to merge it one day?
This pull request add support for select related and general related queries.
Summary To take advantage of this it requires that the plain Django model either adds a custom query set manager and uses that for queries where it wants the related object to be transmogrify into the final polymorphic type of that the default manager's queryset uses/ has PolymorphicQuerySetMixin or PolymorphicRelatedQuerySet as a base class
ie
class PlainModel(models.Model): objects = models.Manager.from_queryset(PolymorphicRelatedQuerySet)()
The default Django select_related can be used including which means this is simple to use from the Django admin.
Performance When using select_related we archive fetch of the data in a single query including all information required to transmogrify the related object. This is an improvement from n+1 (main line) or models + 1 (with #531)
Notes
It has minimal support for prefetch_related cannot fetch attributes not on all child models or via class names this may fix #498
Fixes: #198 #436 #359 #244