Django User Model 을 확장하는 방법
ref.1 에 현재 Django 의 User Model 을 확장하는 방법을 이야기 해준다. admin page 에서 보이게 하는 방법도 있다.( InlineModelAdmin )
User model 의 확장
현재 django 에서 제공하는 User Model 에 더해서 database 에 data 를 추가로 저장하고 싶다면, one-to-one-model (또는 profile model 라고 한다.) 을 사용한다.ref. 1에 있는 예제를 보자. Employee 라는 부분을 User model 에 더하게 된다.
from django.contrib.auth.models import User
class Employee(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
department = models.CharField(max_length=100)
>>> u = User.objects.get(username='fsmith')
>>> freds_department = u.employee.department
settings.AUTH_USER_MODEL
그러나 User 부분이 바뀔 수 있어서 User 대신에 settings.AUTH_USER_MODEL 를 사용하자.from django.contrib.auth.models import User
from django.conf import settings
class Employee(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, primary_key=True)
department = models.CharField(max_length=100)
insert data
user data 를 넣을 때 같이 넣어줘야 할 수 있다. User 의 pk (primary key) 정보가 필요해서 User 정보가 db 에 저장된 이후에 해야 한다.Reference
- Customizing authentication in Django | Django documentation | Django
- Model field reference | Django documentation | Django
댓글 없음:
댓글 쓰기