2017-05-09 10 views
0

Djangoでユーザ名として一意になるように複数のフィールドを設定することはできますか?これは愚かな考えですか?Django Compositeユーザ名

例。

class MyUser(AbstractBaseUser, PermissionsMixin): 
    user_id = models.CharField(max_length=255) 
    backend = models.CharField(max_length=255) 
    username = backend + user_id # ??? 

    class Meta: 
     unique_together = (
      ('user_id', 'backend') 
     ) 

答えて

0

あなたはproperty'username'を作ることができます。しかし、私はあなたがそれをUSERNAME_FIELDにしたいと思っているので、それを使ってdbを問い合わせることができます。

class MyUser(AbstractBaseUser, PermissionsMixin): 
    user_id = models.CharField(max_length=255) 
    backend = models.CharField(max_length=255) 
    username = models.CharField(max_length=510, editable=False) 

    class Meta: 
     unique_together = (
      ('user_id', 'backend') 
     ) 

    def save(self, *args, **kwargs): 
     self.username = self.backend + self.user_id 
     super(MyUser, self).save(*args, **kwargs) 
関連する問題