覆盖django获取当前站点-使用子域

覆盖django获取当前站点-使用子域,django,django-admin,Django,Django Admin,我有一个启用了的Django项目 该项目将处理多个域和多个子域 我在Sites表中有domain.com,但是当我访问sub.domain.com/admin时,我得到错误站点匹配查询不存在。如果我将sub.domain.com添加到Sites表中,一切正常 Site.objects.create(domain='domain.com', name='Test1') # Site.objects.create(domain='sub.domain.com', name='Test2') 问题是

我有一个启用了的Django项目

该项目将处理多个域和多个子域

我在Sites表中有domain.com,但是当我访问sub.domain.com/admin时,我得到错误
站点匹配查询不存在。
如果我将sub.domain.com添加到Sites表中,一切正常

Site.objects.create(domain='domain.com', name='Test1')
# Site.objects.create(domain='sub.domain.com', name='Test2')
问题是GET-CurruntSub(请求)不考虑子域,并且我不想在站点中创建几个实例来表示每个子域和域。 是否有任何方法可以覆盖获取当前站点(请求)?我已经构建了我的版本,但是Django本身在访问Django admin时调用了原始版本,这是一个问题

def get_current_site(request: HttpRequest = None):
    from django.contrib.sites.models import Site
    host = request.get_host()
    extract = tldextract.extract(host) 
    domain = extract.registered_domain # removes subdomain
    return Site.objects.get(domain__iexact=domain)

子域实际上是一个不同的站点。因此,从技术上讲,它们应该是不同的场地对象。例如:abc.wordpress.com与wordpress.com不同,但wordpress.com通常与www.wordpress.com相同,对吗?www.wordpress.com只是wordpress.com的cname,所以从技术上讲,它们仍然是一个站点或托管在同一服务器实例上。(如今,他们甚至将www.wordpress.com重定向到wordpress.com,以避免人们产生混淆)