是否可以使用两个或多个配置为唯一的字段作为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')
)
答案 0 :(得分:0)
您可以'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)