【问题标题】: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)