Автоматическая генерация имен арендаторов в django

Сначала немного предисловия. Я создаю многопользовательское приложение для потребителей, используя Django/DRF. Я (пытаюсь) не использовать никаких сторонних пакетов для многопользовательской части. Вместо этого я просто создал модель Tenant, которая имеет поле OneToOne в модели User, так что есть главная таблица арендатора, где все остальные таблицы имеют внешний ключ, указывающий на нее.

Что-то вроде этого:

class Tenant(models.Model):
    tenant_id = f'{models.UUIDField(primary_key=True, default=RandomUUID, editable=False)}'
    tenant_name = models.CharField(max_length=255, default=get_user_email()) # How?


class UserAccount(AbstractBaseUser, PermissionsMixin):
    tenant = models.OneToOneField(Tenant, on_delete=models.CASCADE)
    user_id = f'{models.UUIDField(primary_key=True, default=RandomUUID, editable=False)}'
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    email = models.EmailField(unique=True, max_length=255)

Тогда я попытался создать функцию в models.py в приложении Tenant, которая бы возвращала email пользователя, а затем использовала его в качестве вызываемой функции для значения по умолчанию в tenant_name, например, так:

from users.models import UserAccount

def get_user_email():
    return UserAccount.user.email

class Tenant(models.Model):
    tenant_id = f'{models.UUIDField(primary_key=True, default=RandomUUID, editable=False)}'
    tenant_name = models.CharField(max_length=255, default=get_user_email())

Но когда я запускаю makemigrations, он сообщает мне, что не может импортировать UserAccount из user.models (скорее всего, из-за циклического импорта).

Так,

  1. на правильном ли я пути?
  2. Как мне избежать циклического импорта?
Вернуться на верх