Показать всех пользователей, связанных с арендатором, в одном месте - PullRequest
0 голосов
/ 23 мая 2019

Я работаю над приложением в модели saas (django 2.1).Я использую плагин арендаторов django (https://github.com/tomturner/django-tenants).

. Моя задача - отобразить всех арендаторов в «общедоступной» схеме. Таким образом, чтобы увидеть, сколько у каждого арендатора есть пользователей, чтобы иметь возможность управлять имии т. д. Является ли хорошим архитектурным решением поместить внешний ключ в Tenant в модели User и сохранить этот столбец во время процесса регистрации?

Есть ли другой способ сделать это?

НижеНапример, псевдокод:

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)

1 Ответ

0 голосов
/ 24 мая 2019

Вы можете перебирать своих арендаторов и получать пользователей для каждого арендатора с помощью следующего кода:

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