Django 사용자 정의 사용자 모델

2265 단어
사용자 정의 사용자 모델에는 여러 가지 방법이 있는데 AbstractUser를 계승하는 것은 내가 비교적 좋다고 생각하는 방법일 뿐이다.1. 먼저 사용자 모델 UserProfile을 사용자 정의하여 원하는 속성을 확장할 수 있습니다
from django.contrib.auth.models import AbstractUser
# Create your models here.
class UserProfile(AbstractUser):
    '''  Django   User  '''
    user_name = models.CharField(max_length=200)
    user_weburl = models.CharField(max_length=200, default = "www.loveu888.com")

2、settings에서.py 파일 끝에 내용을 추가하고 시스템의user모델을 사용자 정의 UserProfile 모델로 대체합니다
#   user
AUTH_USER_MODEL = 'admin_web.UserProfile' //admin_web    app 

3. 자신의 앱에 있는admin.py 파일에 자신의 UserProfile 모델 등록
from admin_web.models import UserProfile
# Register your models here.
admin.site.register(UserProfile)

그러나 이렇게 하면 문제가 하나 있다. 백엔드 관리 시스템, 사용자 모델에 사용자를 추가한 후에 비밀번호가 명문인 것을 발견하면 새로 만든 사용자에 로그인할 수 없다. 어떻게 해결합니까?내려다보다그럼 앱에 있는 관리자.py 파일에 이렇게 써야 돼요.
from admin_web.models import UserProfile
from django.contrib.auth.admin import UserAdmin
from django.utils.translation import gettext_lazy

# Register your models here.

class UserProfileAdmin(UserAdmin):
    list_display = ('username','last_login','is_superuser','is_staff','is_active','date_joined')
    fieldsets = (
        (None,{'fields':('username','password','first_name','last_name','email','user_phone')}),

        # (gettext_lazy('User Information'),{'fields':('user','birthday','gender','mobile')}),

        # (gettext_lazy('Permissions'), {'fields': ('is_superuser','is_staff','is_active',
                                                #   'groups', 'user_permissions')}),

        # (gettext_lazy('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )


admin.site.register(UserProfile, UserProfileAdmin)

계승 시스템 UserAdmin의 UserProfileAdmin 클래스를 정의합니다. 이 클래스에서 우리의 요구에 따라 사용자 모델의 필드를 설정할 수 있습니다. 5. 마지막으로 데이터베이스를 이동합니다.
python manage.py makemigrations
python manage.py migrate

좋은 웹페이지 즐겨찾기