【问题标题】:Django Composite UsernameDjango 复合用户名
【发布时间】:2017-05-09 21:02:15
【问题描述】:

是否可以将两个或多个配置为唯一的字段一起用作 Django 中的用户名?这是一个愚蠢的想法吗?

例如;

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')
        )

【问题讨论】:

    标签: python django django-models django-authentication


    【解决方案1】:

    您可以将'username' 设为property。但由于我假设您希望它是 USERNAME_FIELD 并能够用它查询数据库,所以我会做类似的事情:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      • 2022-08-22
      • 2015-11-30
      • 1970-01-01
      • 2023-03-29
      • 2023-04-06
      相关资源
      最近更新 更多