Автоматическая генерация имен арендаторов в 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 (скорее всего, из-за циклического импорта).
Так,
- на правильном ли я пути?
- Как мне избежать циклического импорта?