我在 Django 方面并不先進,我想知道如何以及是否可以做到這一點。
我需要覆寫 Django 的用戶模型,并將欄位“用戶名”更改為“sr_usuario”,將“密碼”更改為“sr_password”,但我想繼續使用所有 Django 的默認身份驗證方案和權限。我不僅想更改資料庫中的描述或標簽,我還想更改模型中欄位的名稱,例如當我需要進行查詢時,我會使用 User.objects.filter(sr_usuario= “user_name”),一切都會正常作業。
這是可能的?我在我搜索過的檔案或論壇上找不到任何東西。
非常感謝您!
uj5u.com熱心網友回復:
是的,如果您想覆寫用戶模型,您需要添加到您的設定中:
AUTH_USER_MODEL = "<THE PATH OF THE USER MODEL>"
并在該模型中使用AbstractUser
此處的 Django 檔案:https ://docs.djangoproject.com/en/4.1/topics/auth/customizing/#using-a-custom-user-model-when-starting-a-project
uj5u.com熱心網友回復:
這是不可能的,因為所有 django 代碼都嚴格耦合到用戶中的欄位。
但是,您可以創建自定義身份驗證后端并使用帶有提到的欄位名稱的自定義用戶模型。但這需要大量的編碼。
uj5u.com熱心網友回復:
You should subclass AbstractBaseUser [doc], and set this custom user model as AUTH_USER_MODEL [doc] in your settings.
This will instruct Django to use your custom user model everywhere, and retain all the built-in auth/permission behavior.
For example:
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
from django.db import models
class MyUser(AbstractBaseUser, PermissionsMixin):
sr_usuario = models.CharField(max_length=100, unique=True)
sr_password = models.CharField(max_length=100)
# ...
Then use this in settings:
AUTH_USER_MODEL = 'my_app.MyUser'
Note that migrations can be tricky here, so it is best to do this at the start of a new project.
class MyUser(AbstractUser):
username = None
sr_usuario = models.CharField(max_length=150, unique=True)
USERNAME_FIELD = 'sr_usuario'
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520699.html
