#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.

Reply via email to