首页 > 解决方案 > 如何在 Django 中实现切换帐户选项

问题描述

考虑一个有公司帐户和员工帐户的应用程序。我想将员工添加为公司的管理员。然后管理员应该能够与公司切换帐户。是否可以进行切换帐户选项?我是 Django 的初学者。谁能帮我解决这个问题?

我在这里添加我的用户模型:

# Custom user
class CustomUser(AbstractUser):
    """ Custom user model"""
    email = models.EmailField(unique=True, validators=[EmailValidator])
    is_company = models.BooleanField(default=True)
    is_employee = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    slug = AutoSlugField(populate_from='username')

    def __str__(self):
        return f"{self.username}"

# Company user
class CompanyAccount(TimeStampedModel):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, related_name='company')
    name = models.CharField(max_length=50, null=True, blank=True)
    description = models.TextField(null=True, blank=True)
    email = models.EmailField(null=True, blank=True)
    website_url = models.URLField(null=True, blank=True)
    industry = models.CharField(max_length=50, null=True, blank=True)
    founded_year = models.PositiveSmallIntegerField(blank=True, null=True)
    headquarters = models.CharField(max_length=100, null=True, blank=True)


    def __str__(self):
        return f"{self.name}"

# Employee user
class Employee(TimeStampedModel):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, related_name="profile")
    first_name = models.CharField(max_length=50, null=True, blank=True)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    city = models.CharField(max_length=100, null=True, blank=True)
    country = models.CharField(max_length=100, null=True, blank=True)
    job_title = models.CharField(max_length=100, null=True, blank=True)

    company = models.ForeignKey(CompanyAccount, on_delete=models.CASCADE, related_name="employee")


    def __str__(self):
        return f"{self.user.username}"


标签: djangoauthenticationmultiple-login

解决方案


推荐阅读