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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-16 13:29:14317瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn