[컴][웹][파이썬] Django 에서 User Model 확장 (Database 저장 내용 확장)

장고 유저 테이블 확장 / user table 확장 / 장고 계정 확장 / django user account /



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

  1. Customizing authentication in Django | Django documentation | Django
  2. Model field reference | Django documentation | Django



댓글 없음:

댓글 쓰기