[英]Django - How to assign AuthUser id(PK) to username?
我想將生成的id
分配給AuthUser Model的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
我該怎么做?
如果我了解您的目標。 您首先需要實例化一個帶有用戶信息(電子郵件,用戶名,密碼等)的用戶實例,以創建用戶,然后將用戶保存到數據庫中。 保存用戶后,您可以獲取該用戶對象並將用戶名重新分配給ID:user = User.objects.get(username = username)user.username = user.id我相信您沒有得到任何幫助,因為該用戶不存在,因此沒有用戶可以從中獲取ID。調試並確認此行中有一個用戶對象user = self.model(email=email, **extra_fields)
正如我在評論中所述,我的建議是為username
一個虛擬值以保存當前模型,然后在保存后更改該值
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
值為'placeholder'
的username
每次都會更改為id
的值,因此不會出現用戶名唯一性的問題。
嘗試這個,
def _create_user(self, username, email, password, **extra_fields):
user = super()._create_user(username, email, password, **extra_fields)
user.username = user.id
user.save()
return user
工作方式:
創建一個Django指定的User實例,然后將其pk
分配給username
字段
您需要通過調用user.save
將用戶保存到數據庫中-由數據庫在保存時生成的id
隨后將在user
實例上可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.