Есть модель юзера:
class Client(AbstractBaseUser, PermissionsMixin):
'''Кастомная модель пользователя'''
email = models.EmailField('Почта', max_length = 60, unique = True)
first_name = models.CharField('Имя', max_length=30, default = '')
last_name = models.CharField('Фамлиия', max_length=30, default = '')
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
is_active = models.BooleanField(default=False)
Есть модель компании
class Company(models.Model):
'''Компания'''
name = models.CharField('Название', max_length=50)
url = models.URLField('Ссылка', max_length=100)
admin = models.ForeignKey(Client, verbose_name='Администратор', on_delete=models.CASCADE)
workers = models.ManyToManyField(Client, verbose_name='Работники', related_name='work')
Есть двухступенчатая регистрация.
На первом этапе пользователь вводит свои данные и регистрируется, на втором вводит информацию для создания компании.
Не могу понять, как правильно было бы реализовать ее создание.
Придумал несколько решений
1) Можно при создании модели передавать айди пользователя, но тогда получится, что незалогиненные пользователи могут создавать эти компании, а этого хотелось бы избежать и использовать
def perform_create(self, serializer):
serializer.save(admin=self.request.user)
Это проще и быстрее, как мне кажется
2) При регистрации сделать третью вкладку, но поместить ее второй. После регистрации приходит на почту письмо с ссылкой активации. Можно спрашивать у пользователя, подтвердил ли он свой аккаунт, после чего пользователь нажмет на кнопку "Подтвердил", и фронт отправит запрос на получение access-токена по этому пользователю, а потом спокойно вставит его в заголовки запроса создания компании, таким образом юзер будет
3) Можно отправлять данные пользователя и данные компании одним запросом, чтобы они приходили вместе, после чего я бы спокойно создавал и то и другое (самый бредовый вариант на мой взгляд)
Подскажите, какой из них более верный или просто предложите совершенно иной, который на ваш взгляд правильный
Спасибо