﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31083	Add select_related support for Site.objects.get_current	Kris Ciccarello	nobody	"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."	New feature	closed	contrib.sites	dev	Normal	wontfix			Unreviewed	0	0	0	0	0	0
