我正在使用 Python 3.9 和 Django 3.2。我想使用 Django 的 auth 模塊進行基本的用戶管理,并將其添加到我的 settings.py 檔案中
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'cbapp',
]
但是,我想將其用戶表的主鍵更改為 UUID,然后添加我自己的方法,所以我在 models/custom_user.py 創建了這個檔案
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomeUserManager(models.Manager):
def get_active_users(self):
qset = CustomUser.objects.filter(
is_active=True
)
return list(qset)
class CustomUser(AbstractUser):
pass
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
objects = CustomeUserManager()
我仍然希望能夠訪問 Django 的原始身份驗證方法,但似乎我無法再訪問它們了,例如“create_user”...
>>> user = CustomUser.objects.create_user('Dave', '[email protected]', 'johnpassword')
Traceback (most recent call last):
File "<input>", line 1, in <module>
user = CustomUser.objects.create_user('Dave', '[email protected]', 'johnpassword')
AttributeError: 'CustomeUserManager' object has no attribute 'create_user'
在添加一些我自己的方法時擴展 Django 的 auth 用戶方法的正確方法是什么?
uj5u.com熱心網友回復:
這些在UserManager[Django-doc]中指定,因此您應該繼承UserManager而不是簡單的Manager:
from django.contrib.auth.models import UserManager
class CustomeUserManager(UserManager):
def get_active_users(self):
return CustomUser.objects.filter(
is_active=True
)
我強烈建議不要回傳串列,而是QuerySet為您的get_active_users. AQuerySet可以進一步過濾,因此不會進行資料庫查詢,然后應該在 Django/Python 層進行后處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/352971.html
標籤:蟒蛇-3.x 姜戈 django 认证 django 用户
上一篇:具有類似url_path的drf動作視圖未顯示在drfswagger上
下一篇:first_name被添加到元組
