无法通过django-tenants获取租户的SaaS数据,显示所有数据而非特定租户数据

0 投票
0 回答
12 浏览
提问于 2025-04-12 00:31

我正在用 django-tenants 构建一个网页应用,按照文档的说明一步步来,但还是遇到问题。我的应用应该根据不同的子域名和数据库模式(schema)来显示特定租户的数据,但我访问的无论哪个网址,显示的都是公共数据库中的所有数据,而不是特定租户的数据。tenant.models 里有我的租户和子域名模型,而 apps 是我想在不同租户中使用的 Django 应用。

我觉得问题出在我对共享应用和租户应用的设置上,但尝试了很多不同的组合,前端的显示没有任何变化。

这是我的 tenant.models.py 文件:

class MspCompany(MyBaseModel, TenantMixin):
    company_name = models.CharField(max_length=60)
    industry_type = models.CharField(max_length=68, choices=INDUSTRY_TYPE)
    email = models.EmailField(max_length=150, unique=True)
    owner_name = models.CharField(max_length=60, blank=True, null=True)
    description = models.TextField(blank=True, null=True)
    picture = models.ImageField(upload_to='images/company',blank=True,null=True)
    users = models.ForeignKey(settings.AUTH_USER_MODEL, 
                                     related_name='users',
                                     on_delete=models.CASCADE
                                    )

class Domain(DomainMixin):
    pass

共享应用和租户应用的设置:

SHARED_APPS = [
    'django_tenants',
    'tenants',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'whitenoise.runserver_nostatic',
    'django.contrib.sites',
    "mathfilters",
    "crispy_forms", # Crispy Forms
    "social_django",
    "django_extensions",
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
    'multiselectfield',
    'phone_field',
    'djstripe',
    'chat',
    'ckeditor',
    'ckeditor_uploader',
    'taggit'
]

TENANT_APPS = [    
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    "dashboards",
    "apps",
    'accounts',
    "layouts",
    "components",
    "pages",
    ]

从下面的图片可以看到,无论我输入哪个子域名,显示的数据都是一样的。probleu.localhost 应该是空的,因为我刚创建了这个新租户。我忽略了什么呢?

公共域名网址: 在这里输入图片描述

租户子域名网址: 在这里输入图片描述

0 个回答

暂无回答

撰写回答