我正在使用saas模型(Django 2.1)中的应用程序。我使用django租户插件(https://github.com/tomturner/django-tenants)。
我的问题是在“公共”模式中显示所有租户。以查看每个租户有多少用户,能够管理它们等的方式。 将外键放入“用户”模型中的租户并在注册过程中保存此列是一个好的架构解决方案吗?
还有另一种方法吗?
下面是示例,伪代码:
class Tenant(TenantMixin):
name = models.CharField(_('Name of company'), max_length=50, unique=True)
on_trial = models.BooleanField(default=True)
paid_until = models.DateTimeField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
auto_create_schema = True
def __str__(self):
return self.name
def get_name(self):
return self.name
class Domain(DomainMixin):
pass
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('Email address'), unique=True)
first_name = models.CharField(_('First name'), max_length=60, blank=True)
last_name = models.CharField(_('Last name'), max_length=60, blank=True)
member_of_company = models.ForeignKey(Tenant, on_delete=models.CASCADE, related_name='users', null=True, blank=True)
答案 0 :(得分:0)
您可以遍历租户并使用以下代码获取每个租户的用户:
from django.db import connection
from django.contrib.auth import get_user_model
from tenant_schemas.utils import get_tenant_model
UserModel = get_user_model()
TenantModel = get_tenant_model()
for tenant in TenantModel.objects.all():
connection.set_tenant(tenant)
tenant_users = UserModel.objects.all()
# Do whatever you want with your users