簡體   English   中英

Django-如何為用戶名分配AuthUser id(PK)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM