#31083: Add select_related support for Site.objects.get_current
-------------------------------------------+------------------------
Reporter: Kris Ciccarello | Owner: nobody
Type: New feature | Status: new
Component: contrib.sites | Version: 3.0
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------------+------------------------
Since we cannot extend `Site`, a common pattern is to use a
`OneToOneField` to extend a `Site` (i.e. with a `SiteDetail` class). When
performing `request.site = get_current_site(request)` in middleware, it
would be nice to be able to efficiently load any extended `Site` objects
onto `request.site` at that time.
Given this class:
```
from django.contrib.sites.models import Site
class SiteDetail(models.Model):
site = models.OneToOneField(
Site, on_delete=models.CASCADE, primary_key=True,
related_name="detail"
)
```
The following does not work:
```
Site.objects.select_related("detail").get_current(request)
> AttributeError: 'QuerySet' object has no attribute 'get_current'
```
We could add support for something like this:
```
Site.objects.get_current(request, select_related=["detail"])
```
Which would allow the user to pass through any custom `Site` extensions
without having to re-write the code in the `Site` manager. Given the use
of `SITE_CACHE` inside of `SiteManager`, it seems like making this
addition to its API would be a good step.
Does this make sense, or would another approach be better? Happy to make a
PR if this would be considered.
--
Ticket URL: <https://code.djangoproject.com/ticket/31083>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/050.87baaa556b59ea768590ed4aa0f21181%40djangoproject.com.