>백엔드 개발 >파이썬 튜토리얼 >사용자 정의 필드를 사용하여 Django 사용자 모델을 가장 잘 확장하는 방법은 무엇입니까?

사용자 정의 필드를 사용하여 Django 사용자 모델을 가장 잘 확장하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-16 13:29:14266검색

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을 재정의합니다. () 사용자 정의 User 모델의 메소드.
  • 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으로 문의하세요.