首頁 > 後端開發 > Python教學 > 如何使用自訂欄位最好地擴展 Django 使用者模型?

如何使用自訂欄位最好地擴展 Django 使用者模型?

Mary-Kate Olsen
發布: 2024-12-16 13:29:14
原創
262 人瀏覽過

How to Best Extend the Django User Model with Custom Fields?

擴充Django 使用者模型:最佳方法

使用自訂欄位擴充內建Django 使用者模型時,有兩種主要方法脫穎而出:

1。使用 OneToOneField(User) 屬性

這是建議的 Django 方法,涉及建立與 User 模型具有一對一關係的新模型。這個「個人資料」模型可以儲存有關使用者的附加資訊。

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    # Custom fields here, e.g.:
    address = models.CharField(max_length=255)
    phone_number = models.CharField(max_length=15)
    # ...
登入後複製

2.使用自訂使用者模型取代

這種方法涉及將 Django 使用者模型完全替換為包含所需修改的自訂模型。然而,它被認為是激烈的,並帶有警告:

  • 它可能會破壞依賴於用戶模型的其他 Django 功能。
  • 它涉及複製和更改 Django 驗證模組。
  • 可能需要重新實施身份驗證

使用電子郵件作為用戶名

要使用電子郵件作為用戶名,您可以:

  • 覆寫get_username () 自訂使用者模型中的方法。
  • 利用 set_username()更新現有使用者的使用者名稱的方法。

範例:

class CustomUser(AbstractUser):

    def get_username(self):
        return self.email

# ...
user = CustomUser.objects.get(username='john@example.com')
user.set_username('jack@example.com')
user.save()
登入後複製

以上是如何使用自訂欄位最好地擴展 Django 使用者模型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板