0

会社用と従業員用など、django アプリで複数のタイプのユーザーを作成したいと考えています。

私が念頭に置いていたのは、会社がそれ自体にサインアップし、その後、会社の管理者がダッシュボードを介して従業員を作成することでした。

作成後、従業員は直接サインインします。

したがって、(可能であれば) 会社と従業員に使用できるサインイン フォームは 1 つだけです。

class Company(models.Model):
    name = models.CharField(max_length=150)
    logo = models.CharField(max_length=1000, blank=True)
    admin_name = models.CharField(max_length=200)
    admin_email = models.CharField(max_length=200) # can be used as 'username'
    website = models.CharField(max_length=200, blank=True)

class CustomUserManager(auth_models.BaseUserManager):
    def create_user(self, email, first_name, emp_id, password):
       #
    def create_superuser(self, email, first_name, emp_id, password):
       #

class Users(auth_models.AbstractBaseUser, auth_models.PermissionsMixin):
    company = models.ForeignKey(Company, on_delete=models.CASCADE, null=True)
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)
    profile_pic = models.CharField(max_length=2000, blank=True)
    email = models.EmailField(unique=True, null=True)
    emp_id = models.CharField(max_length=50)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'emp_id', ]
    objects = CustomUserManager()

ほぼすべての場所を検索しましたが、何も見つかりませんでした。この問題を解決する方法がある場合は、それ以外の方法でこれを行うためのトリックを知っている場合はお知らせください。それも大歓迎です。前もって感謝します。

4

1 に答える 1

0

さまざまなタイプのユーザー用にグループを作成できます。

Group.objects.create(name='Company')

次に、ユーザーを適切なグループに割り当てます。

user.groups.add(group)

あなたができる最後のことは、従業員を会社のユーザーに関連付けることであるため、次のように Users モデルに自己参照を追加できます。

company_user = models.ForeignKey("self", null=True, blank=True)

そのため、それらの従業員については、ユーザーをその会社のユーザーに関連付け、会社のユーザー自体は空白のままにしておくことができます。

ただし、会社の外部キーを使用する場合は、その必要はありません。関連するユーザーをそのように追跡する必要があります。ただし、企業に複数の「企業ユーザー」がいる場合は、従業員をそれぞれにグループ化できます。

それが役立つことを願っています。

于 2016-08-12T19:22:10.743 に答える