๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“๐Ÿ’ช/Django

3์ฃผ์ฐจ_1๋ฒˆ์งธ_์‚ฌ์šฉ์ž ๋ชจ๋ธ ๋น„๊ต, ๋ชจ๋ธ ์—…๊ทธ๋ ˆ์ด๋“œ, ์ ์šฉ

by ์ˆ˜์จ”์•™ 2022. 9. 23.

 

์ง€๋‚œ๋ฒˆ์— createsuperuser ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ด€๋ฆฌ์ž๋ฅผ ๋งŒ๋“ค์—ˆ์—ˆ๋Š”๋ฐ

orm ๋ชจ๋ธ์„ ๋งŒ๋“ค์ง€ ์•Š์•˜๋Š”๋ฐ๋„ ๊ฐ€๋Šฅํ–ˆ๋˜ ์ด์œ ๋Š” ์žฅ๊ณ ์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” user๋ชจ๋ธ๊ณผ ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค!

๋กœ๊ทธ์ธ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ์ž ๋ชจ๋ธ๋ถ€ํ„ฐ ๋กœ๊ทธ์ธ๊นŒ์ง€ ๊ตฌํ˜„ ํ–ˆ์—ˆ๋Š”๋ฐ ์ด ๊ณผ์ •๋“ค์ด Django์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์—„์ฒญ ํŽธํ•˜๊ฒ ์ง€... ํ•จ ๋ณด์ž!!!

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ db.sqlite3์„ ๋ณด๋ฉด django์—์„œ ์ œ๊ณตํ•˜๋Š” auth_user๊ฐ€ ๋” ๋งŽ์€ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค!

ํ•˜์ง€๋งŒ my_user์˜ bio ์ €์žฅํ•˜๋Š” ๊ณณ์€ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๋‘˜์ด ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค!

 


์ƒ์† ๊ฐ€๋ณ๊ฒŒ ํ™•์ธํ•˜๊ธฐ

 

User ๋ชจ๋ธ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๊ธฐ

 

1. user ์•ฑ์˜ models.py ์ˆ˜์ •ํ•˜๊ธฐ

user์•ฑ์˜ models.py๋ฅผ ๋ณด๋ฉด models.Model์„ ์ƒ์†๋ฐ›์€๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

# Create your models here.
class UserModel(models.Model):
    class Meta:
        db_table = "my_user"

    username = models.CharField(max_length=20, null=False)
    password = models.CharField(max_length=256, null=False)
    bio = models.CharField(max_length=256, default='')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

 

์ € ๋ถ€๋ถ„์—์„œ ์‚ฌ์‹ค bio ๋ง๊ณ  username, password, created_at, updated_at์€ django์—์„œ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ bio ๋ง๊ณ ๋Š” ๋‹ค ๋ฐ›์•„์˜ค๊ณ  ์ง€์›Œ์ฃผ์ž!

 

(์„œ๋ฒ„ ์ค‘์ง€(ctrl+c)๋ฅผ ํ•ด์ฃผ๊ณ  ์ˆ˜์ •ํ•ด์ฃผ์ž!)

 

์•„๋ž˜์ฒ˜๋Ÿผ AbstractUser์„ ๋ฐ›์•„์˜ฌ๊ฑด๋ฐ ์žฅ๊ณ ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์œ ์ € ๋ชจ๋ธ์„ ๋ฐ›์•„์˜ค๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค!

from django.contrib.auth.models import AbstractUser

 

์›๋ž˜ UserModel์€ models.Model์„ ์ƒ์†๋ฐ›๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์ด์ œ Abstractuser์„ ์‚ฌ์šฉํ•ด์•ผ๋˜๋‹ˆ๊นŒ ์ฝ”๋“œ ์ˆ˜์ •ํ•ด์ฃผ์ž

class UserModel(AbstractUser):

 

๋‚˜๋จธ์ง€ username, password, created_at, updated_at์€ ์ง€์›Œ์ฃผ์ž! Abstractuser ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋‹ˆ๊นŒ!

#user/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser


# Create your models here.
class UserModel(AbstractUser):
    class Meta:
        db_table = "my_user"

    bio = models.CharField(max_length=256, default='')

 

 

UserModel์€ ์žฅ๊ณ ์˜ ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ  bio๋ฅผ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค

์ด๊ฑธ djangoํ•œํ…Œ ์•Œ๋ ค์ค˜์•ผํ•œ๋‹ค.

 

2. ์žฅ๊ณ ์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ

 

 

makemigrations ์™€ migrate๋กœ ์ ์šฉ์‹œํ‚ค๊ธฐ ์ „์— ํ•œ๊ฐ€์ง€ ๋จผ์ € ํ•ด์•ผ๋  ๊ฒƒ์ด ์žˆ๋‹ค.

 

mySpartaSns์˜ settings.py์—์„œ ๋งจ ๋ฐ‘์—

 

# mySpartaSns/settings.py
AUTH_USER_MODEL = 'user.UserModel'

์ด๊ฑธ ์ถ”๊ฐ€ํ•ด์ฃผ์ž!

์ด๊ฒŒ ๋ญ๋ƒ๋ฉด ๊ธฐ๋ณธ์ ์ธ ์žฅ๊ณ ์˜ ์‚ฌ์šฉ์ž ๋ชจ๋ธ์„ ๋ฐ”๊พธ๊ฒ ๋‹ค๋Š” ์–˜๊ธฐ๋‹ค!

AUTH_USER_MODEL์— user.UserModel ํด๋ž˜์Šค๋ฅผ ๋„ฃ์–ด์ค„๊ฑฐ๋‹ค ํ•˜๋Š”๊ฒƒ!

์žฅ๊ณ ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ

๊ทธ๊ฑฐ์— bio๋ฅผ ์ถ”๊ฐ€ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ ๋ชจ๋ธ์— ์ถ”๊ฐ€ ํ–ˆ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค!

 

 


User ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ์‹œํ‚ค๊ธฐ

 

makemigrations ์™€ migrate๋กœ ์ ์šฉ์‹œ์ผœ์ฃผ์ž!

 

python manage.py makemigrations #์ˆ˜์ •๋œ๊ฑฐ ์•Œ๋ ค์ฃผ๊ณ 
python manage.py migrate # ์ ์šฉ!

ํ•œ ์ค„์”ฉ ์ž…๋ ฅํ•˜์ž!

 

๊ทธ๋Ÿฌ๊ณ  ๋‚˜๋ฉด

์›๋ž˜ my_user์— ์—†๋˜ ๊ฒƒ๋“ค์ด ๋“ค์–ด๊ฐ€์žˆ๋‹ค! ์žฅ๊ณ ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š”๊ฒƒ๋“ค์ด!

 

728x90

๋Œ“๊ธ€