Python Django-如何将AuthUser id(PK)分配给用户名?
我想将生成的Python Django-如何将AuthUser id(PK)分配给用户名?,python,django,django-models,django-users,Python,Django,Django Models,Django Users,我想将生成的id分配给AuthUser模型的username列。我该怎么做 我尝试更新UserManager,但没有成功。这就是我所做的 def _create_user(self, username=None, email=None, password=None, **extra_fields): """ Create and save a user with the given email, and password. """
id
分配给AuthUser模型的username
列。我该怎么做
我尝试更新UserManager
,但没有成功。这就是我所做的
def _create_user(self, username=None, email=None, password=None,
**extra_fields):
"""
Create and save a user with the given email, and password.
"""
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
if not username:
username = user.id # it always returns None.
user.username = self.model.normalize_username(username)
user.set_password(password)
user.save(using=self._db)
return user
如何操作?您需要通过调用
user将用户保存到数据库中。save
-数据库在保存时生成的id
将在user
实例上可用。如果我理解您的目标。您需要首先使用用户的信息(电子邮件、用户名、密码等)实例化一个用户实例,以创建该用户,然后保存该用户,使其位于数据库中。保存用户后,您可以获取该用户对象并将用户名重新分配给id:
user=user.objects.get(用户名=username)
user.username=user.id
我相信你没有得到任何,因为用户不存在,因此没有用户到对象来获取id。调试并确认此行中有一个用户对象
user=self.model(email=email,**额外字段)
,如我在评论中所述,我建议给用户名
一个虚拟值,用于暂时保存模型,然后在保存后更改该值
def _create_user(self, username=None, email=None, password=None,
**extra_fields):
"""
Create and save a user with the given email, and password.
"""
email = self.normalize_email(email)
user = self.model(email=email, **extra_fields)
user.username = self.model.normalize_username('placeholder')
user.set_password(password)
user.save(using=self._db)
user.username = '{}'.format(user.id) # As the 'id' will always be unique
user.save(using=self._db)
return user
值为“占位符”的
username
每次都会更改为id
,因此用户名的唯一性不会出现问题。试试像Nope这样的方法怎么样。Django要求将username
作为必填字段。我将无法保存
,将后保存
放在一边。如果我没有错,user.id
将是无
,直到创建数据库行,这意味着非用户名
将始终是真的
?为什么不在user.save(使用=self.\u DB)
之后分配用户名
,因此,您可以获取用户对象的id
,然后再次保存它。正确,但Django要求用户名作为必填字段。如何保存它?我在其他评论中注意到关于所需用户名的评论,但您保存时没有它。Bijoy的随机用户解决方案是可以接受的,因为您可以立即更改它,另外,您是否尝试过空字符串?