J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[Django] ์žฅ๊ณ  models ๋ฐ DB ์„ค๊ณ„ - Migration, Admin
Backend/๐Ÿ”ต Django

[Django] ์žฅ๊ณ  models ๋ฐ DB ์„ค๊ณ„ - Migration, Admin

728x90

Migration์ด๋ž€?

Django์—์„œ Migration์ด๋ž€, ์‰ฝ๊ฒŒ ๋งํ•ด python์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ์›น ํ”„๋ ˆ์ž„์›Œํฌ Django์—์„œ python์œผ๋กœ ์งœ์—ฌ์ง„ code๋ฅผ DB๊ฐ€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๊ฒŒ ์„ค๋ช…ํ•ด์ฃผ๋Š” ์ž‘์—…์ด๋‹ค. model์˜ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ DB ์Šคํ‚ค๋งˆ์— ์ ์šฉ์‹œ์ผœ ์ค€๋‹ค.

 

 

1. Models ์ •์˜ํ•˜๊ธฐ

์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์€์ง€ class๋กœ ์ •์˜ํ•œ๋‹ค.

๋ธ”๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋กœ ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

from django.db import models

# Create your models here.

class Blog(models.Model):
	# title ๋ณ€์ˆ˜๋Š” ์ตœ๋Œ€ ๊ธธ์ด 200์ธ ์งง์€ ๋ฌธ์ž์—ด ํ˜•์‹์œผ๋กœ ์ •์˜
	title = models.CharField(max_length=200)
	# writer ๋ณ€์ˆ˜๋Š” 100
	writer = models.CharField(max_length=100)
	# pub_date ๋Š” ๋‚ ์งœ-์‹œ๊ฐ„ ํ˜•์‹์œผ๋กœ ์ •์˜
	pub_date = models.DateTimeField()
	body = models.TextField()

 

Data Field ์ข…๋ฅ˜

ํ•„๋“œ ํƒ€์ž… HTML ์œ„์ ฏ ์„ค๋ช…
BooleanField CheckboxInput 'True/False' ๊ฐ’์„ ๊ฐ€์ง€๋Š” ํ•„๋“œ.
CharField TextInput ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ•„๋“œ. ์ตœ๋Œ€ ๊ธ€์ž ์ˆ˜(max_length) ์˜ต์…˜์„ ๋ฐ˜๋“œ์‹œ ์ง€์ •ํ•ด์•ผํ•จ
DateField TextInput datetime.date ์ธ์Šคํ„ด์Šค์ธ ๋‚ ์งœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ•„๋“œ.
๋‹ฌ๋ ฅ ์œ„์ ฏ๊ณผ ์˜ค๋Š˜ ๋‚ ์งœ ์ž…๋ ฅ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ ์ œ๊ณตํ•จ
DateTimeField TextInput datetime.datetime ์ธ์Šคํ„ด์Šค์ธ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ•„๋“œ. ๋‘ ๊ฐœ์˜ TextInput, ๋‹ฌ๋ ฅ ์œ„์ ฏ, ์˜ค๋Š˜ ์ž˜์งœ ์ž…๋ ฅ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ ์ œ๊ณตํ•จ
FloatField NumberInput Python์˜ float๊ณผ ๊ฐ™์€ ์‹ค์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ•„๋“œ.
IntegerField NumberInput Python์˜ integer๊ณผ ๊ฐ™์€ ์ •์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ•„๋“œ.
TextField Textarea max_length ๊ฐ’์„ ์ง€์ •ํ•˜๋ฉด ํผ์—์„œ๋Š” ์ œํ•œ๋˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Œ

 

Field Option ์ข…๋ฅ˜

  • null : DB ํ•„๋“œ์— NULL ํ—ˆ์šฉ ์—ฌ๋ถ€ (๋””ํดํŠธ : False)
  • blank : ์ž…๋ ฅ๊ฐ’ ์œ ํšจ์„ฑ (validation) ๊ฒ€์‚ฌ ์‹œ์— empty ๊ฐ’ ํ—ˆ์šฉ ์—ฌ๋ถ€ (๋””ํดํŠธ : False)
  • default : ๋””ํดํŠธ ๊ฐ’ ์ง€์ •. ๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š์•˜์„ ๋•Œ ์‚ฌ์šฉ
  • unique : ์œ ์ผ์„ฑ ์—ฌ๋ถ€ (๋””ํดํŠธ : False)
  • primary_key : ๊ธฐ๋ณธํ‚ค ์„ค์ •. ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์ ์œผ๋กœ ๊ณ ์œ ํ•œ ์ •์ˆ˜๊ฐ’ id๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •
  • choices : select box ์†Œ์Šค๋กœ ์‚ฌ์šฉ. ์ด์ค‘ ํŠœํ”Œ๋กœ ์˜ต์…˜ ์ง€์ • ํ•„์š”
    (์ฒซ๋ฒˆ ์งธ ์›์†Œ: DB์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’, ๋‘๋ฒˆ ์งธ ์›์†Œ: html์— ํ‘œ์‹œ๋˜๋Š” ๋‚ด์šฉ)
  • help_text : ํ•„๋“œ ์ž…๋ ฅ ๋„์›€๋ง

 

2. DB์— ์ ์šฉํ•˜๊ธฐ

Migrations ๋งŒ๋“ค๊ธฐ

$ python manage.py makemigrations

- ์•ฑ ๋‚ด์— migration ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์„œ models.py์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅ

- python code๋ฅผ DB๊ฐ€ ์•Œ์•„๋“ค์„ ์ˆ˜ ์žˆ๋„๋ก ๋ณ€์—ญ

 

DB migrate ํ•˜๊ธฐ

$ python manage.py migrate

- Migration ํด๋”๋ฅผ ์‹คํ–‰์‹œ์ผœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ

- ๋ฒˆ์—ญ๋œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ DB์— ์ €์žฅ ๋ฐ ๋ฐ˜์˜

 

 

3. Admin ๊ณ„์ • ์ƒ์„ฑํ•˜๊ธฐ

- Super User ์ƒ์„ฑ

$ python manage.py createsuperuser

- Username(์ด๋ฆ„), Email address(์ด๋ฉ”์ผ), Password(๋น„๋ฐ€๋ฒˆํ˜ธ) ๋“ฑ๋ก

 

- admin.py์— ํ™œ์šฉํ•  ๋ฐ์ดํ„ฐ ๋“ฑ๋ก

from django.contrib import admin
from .models import Blog

# Register your models here.

# ๋ธ”๋กœ๊ทธ ์‚ฌ์ดํŠธ ๋“ฑ๋ก
admin.site.register(Blog)

 

4. Models(DB) ์‚ฌ์šฉํ•˜๊ธฐ

- views.py์— models.py ๊ฐ€์ ธ์˜ค๊ธฐ

from .models import *
728x90

'Backend > ๐Ÿ”ต Django' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Django] ์žฅ๊ณ  ์ •์ ํŒŒ์ผ ๊ด€๋ฆฌํ•˜๊ธฐ - Static, Media  (0) 2021.07.07
[Django] ์žฅ๊ณ  CRUD ๊ตฌํ˜„ - ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ  (2) 2021.07.07
[Django] ์žฅ๊ณ  ์‹ค์Šต/๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„ํ•˜๊ธฐ - ํ”„๋กœ์ ํŠธ ๋ฐ ์•ฑ ์ƒ์„ฑ  (0) 2021.05.11
    'Backend/๐Ÿ”ต Django' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [Django] ์žฅ๊ณ  ์ •์ ํŒŒ์ผ ๊ด€๋ฆฌํ•˜๊ธฐ - Static, Media
    • [Django] ์žฅ๊ณ  CRUD ๊ตฌํ˜„ - ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ
    • [Django] ์žฅ๊ณ  ์‹ค์Šต/๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„ํ•˜๊ธฐ - ํ”„๋กœ์ ํŠธ ๋ฐ ์•ฑ ์ƒ์„ฑ
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”