Django Model

μž₯κ³ λŠ” ORM기법에 따라 ν…Œμ΄λΈ”μ„ ν•˜λ‚˜μ˜ 클래슀둜 μ •μ˜ν•˜κ³ , ν…Œμ΄λΈ”μ˜ μ»¬λŸΌμ€ 클래슀의 λ³€μˆ˜λ‘œ λ§€ν•‘ν•œλ‹€.

λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ •

# settings.py
# Database
# https://docs.djangoproject.com/en/2.1/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'mydatabase',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

기본적으둜 sqlite3λ₯Ό μ‚¬μš©ν•˜κ³  μžˆλ‹€. λ§Œμ•½μ— λ‹€λ₯Έ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄ ENGINE의 뒷뢀뢄을 μˆ˜μ •ν•˜λ©΄λœλ‹€.

ENGINE

  • django.db.backends.mysql

  • django.db.backends.oracle

  • django.db.backends.postgresql

  • django.db.backends.sqlite3

NAME

μ—¬κΈ°μ„œ name은 ν”„λ‘œμ νŠΈ μ €μž₯될 파일 λͺ…이닀.

μ‚¬μš©μž μ„€μ •

SQLite λ₯Ό λ°μ΄ν„°λ² μ΄μŠ€λ‘œ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우 USER, PASSWORD, HOSTλ₯Ό μΆ”κ°€ μ„€μ •ν•˜μ—¬ μ‚¬μš©ν•  수 μžˆλ‹€.

>> mysql μ—°λ™ν•˜κΈ°

λͺ¨λΈ λ§Œλ“€κΈ°

각 λͺ¨λΈμ€ Django.db.models.Model 클래슀의 μ„œλΈŒν΄λž˜μŠ€λ‘œ ν‘œν˜„λœλ‹€. 각각의 λͺ¨λΈμ€ μ—¬λŸ¬κ°œμ˜ 클래슀 λ³€μˆ˜(λͺ¨λΈμ˜ λ°μ΄ν„°λ² μ΄μŠ€ ν•„λ“œ)λ₯Ό κ°€μ§€κ³  μžˆλ‹€.

modelsλŠ” μƒμ„±ν•œ λͺ¨λΈμ΄ μž₯κ³  λͺ¨λΈμž„을 μ˜λ―Έν•œλ‹€. μž₯κ³ λŠ” μƒμ„±λœ model이 λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯λ˜μ–΄μ•Όν•œλ‹€κ³  μ•Œκ²Œλœλ‹€.

μ•„λž˜μ—μ„œ κ°„λ‹¨ν•œ μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄μž.

섀문쑰사 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— Questionκ³Ό Choice λ‘κ°œμ˜ λͺ¨λΈμ„ μƒμ„±ν•΄λ³΄μž. μ΄λ•Œ λ‘κ°œμ˜ λͺ¨λΈμ€ μ—°κ΄€λ˜μ–΄ μžˆλ‹€.

속성(Field)

λͺ¨λΈμ€ μ—¬λŸ¬κ°œμ˜ 속성을 κ°€μ§€κ³  μžˆλ‹€. 속성을 μ •μ˜ν•˜κΈ° μœ„ν•΄μ„œλŠ” 각 ν•„λ“œλ§ˆλ‹€ μ–΄λ–€ μ’…λ₯˜μ˜ 데이터 νƒ€μž…(ν…μŠ€νŠΈ, 숫자, λ‚ μ§œ, λ‹€λ₯Έ 객체 μ°Έμ‘° λ“±)을 κ°€μ§€λŠ”μ§€λ₯Ό μ •ν•΄μ•Όν•œλ‹€.

각 속성은 Field 클래슀의 μΈμŠ€ν„΄μŠ€λ‘œ ν‘œν˜„λœλ‹€.

Field

μ„€λͺ…

AutoField(**options)

id둜 μ‚¬μš© κ°€λŠ₯ν•œ μžλ™μœΌλ‘œ μ¦κ°€ν•˜λŠ” IntegerField이닀. λͺ¨λΈμ˜ κΈ°λ³Έν‚€ ν•„λ“œλ₯Ό λ³„λ„λ‘œ μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ μΆ”κ°€λœλ‹€.

BooleanField(**options)

true / false ν•„λ“œμ΄λ‹€. nullκ°’ ν—ˆμš©μ΄ ν•„μš”ν•˜λ‹€λ©΄ NullBooleanField λ₯Ό μ‚¬μš©ν•˜λ©΄λœλ‹€. Default μ˜΅μ…˜μ„ μ •μ˜ν•˜μ§€ μ•ŠμœΌλ©΄ 기본값은 None이닀.

CharField(max_length=None,**options)

κΈ€μžμˆ˜κ°€ μ œν•œλœ ν…μŠ€νŠΈλ₯Ό μ •μ˜ 제λͺ©κ³Ό 같이 짧은 λ¬Έμžμ—΄ 정보λ₯Ό μ €μž₯ν•  λ•Œ μ‚¬μš©ν•œλ‹€. max_length ν•„λ“œμ˜ μ΅œλŒ€κΈΈμ΄λŠ” ν•„μˆ˜ μ˜΅μ…˜μ΄λ‹€.

DecimalField(max_digit=None, decimal_palces=None, **options)

κ³ μ • μ†Œμˆ˜λ‘œ Python의 Decimal μΈμŠ€ν„΄μŠ€λ‘œ λ‚˜νƒ€λ‚œλ‹€. max_digits μˆ«μžμ— ν—ˆμš©λ˜λŠ” μ΅œλŒ€ μžλ¦Ώμˆ˜μ΄λ‹€. decimal_palces μˆ«μžμ™€ ν•¨κ»˜ μ €μž₯될 μ†Œμˆ˜ μžλ¦Ώμˆ˜μ΄λ‹€. DecimalField(…, max_digits=5, decimal_palces=2) λŠ” μ΅œλŒ€ 999 μ†Œμˆ˜μ  2자리 μ΄ν•˜μ΄λ‹€.

IntegerField(**options)

μ •μˆ˜ κ°’

TextField(**options)

κΈ€μž μˆ˜μ— μ œν•œμ΄ μ—†λŠ” κΈ΄ ν…μŠ€νŠΈλ₯Ό ν‘œν˜„ν•œλ‹€.

DateTimeField(auto_now=False, auto_now_add=False,**options)

λ‚ μ§œμ™€ μ‹œκ°„μ„ μ •μ˜ν•œλ‹€. auto_now λŠ” 객체가 μ €μž₯될 λ•Œλ§ˆλ‹€ 맀번 μžλ™μœΌλ‘œ ν˜„μž¬μ‹œκ°„μ΄ μ„€μ •λœλ‹€.( 졜근 μˆ˜μ • λ“± timestamp둜써 μœ μš©ν•˜λ‹€.) Model.saveκ°€ 호좜될 λ•Œ μžλ™μœΌλ‘œ μˆ˜μ •λœλ‹€. auto_now_add 객체가 처음 생성될 λ•Œ μžλ™μœΌλ‘œ ν˜„μž¬μ‹œκ°„μ΄ μ„€μ •λœλ‹€. (μƒμ„±μ˜ timestamp둜 유용) λ§Œμ•½ μˆ˜μ •μ„ μ›ν•œλ‹€λ©΄ default=today or default=tiemzone.now λ₯Ό μ‚¬μš©ν•˜λ©΄λœλ‹€. 이 3개의 μ˜΅μ…˜μ€ 같이 μ“Έ 수 μ—†μœΌλ©°, λ§Œμ•½ auto μ˜΅μ…˜μ„ True둜 μ„€μ •ν•˜λ©΄ editable=False, blank=True 둜 μ„€μ •λœλ‹€.

ForeignKey(**options)

λ‹€λ₯Έ λͺ¨λΈ 참쑰킀이닀. models.ForeignKey(Question, on_delete=models.CASCADE) μ—μ„œλŠ” 각각의 Choiceκ°€ ν•˜λ‚˜μ˜ Question에 κ΄€κ³„λœλ‹€λŠ” 것을 μ•Œλ €μ€€λ‹€.

FilePathField(path=None, match=None, recursive=False, max_length=100, **options)

파일 μ‹œμŠ€ν…œμ—μ„œ νŠΉμ •ν•œ 디렉터리에 νŒŒμΌμ΄λ¦„μœΌλ‘œ μ œν•œλœλ‹€. path λŠ” ν•„μˆ˜ 인수둜 μ ˆλŒ€ 파일 μ‹œμŠ€ν…œ κ²½λ‘œμ΄λ‹€.(/home/images) match : 선택적 인수둜 파일 이름을 필터링할 λ•Œ μ‚¬μš©ν•  λ¬Έμžμ—΄λ‘œ 된 μ •κ·œν‘œν˜„μ‹μ΄λ‹€. 기본파일 이름에 μ μš©λœλ‹€. (foo.*\.txt$) recursive : 선택적 인수둜 path의 λͺ¨λ“  μ„œλΈŒ 디렉터리가 ν¬ν•¨λ˜μ•Όν•˜λŠ”μ§€ μ—¬λΆ€λ₯Ό μ§€μ •(true/false) allow_files or allow_folders : 선택적 인수둜 μ§€μ •λœ μœ„μΉ˜μ— 파일 or 폴더λ₯Ό 포함할지 μ—¬λΆ€λ₯Ό μ§€μ •ν•œλ‹€(true/false). λ‘˜ 쀑 ν•œκ°œλŠ” λ°˜λ“œμ‹œ Trueμ—¬μ•Όν•œλ‹€.

λͺ¨λΈ 관계

One-to-One

ν•œ ν…Œμ΄λΈ”μ˜ ν•˜λ‚˜μ˜ λ ˆμ½”λ“œκ°€ λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ 단 ν•˜λ‚˜μ˜ λ ˆμ½”λ“œλ§Œμ„ μ°Έμ‘°ν•  λ•Œ, 이 두 λͺ¨λΈκ°„μ˜ 관계λ₯Ό μΌλŒ€μΌ 관계라고 ν•œλ‹€.

μœ„μ™€ 같이 개인 고객 ν•œλͺ…λ‹Ή μ—¬κΆŒμ€ ν•œκ°œ μžˆμ„ 수 μžˆλ‹€.

OneToOneField

OneToOneFieldλŠ” ForeignKey ν•„λ“œμ— unique=Ture μ˜΅μ…˜μ„ μ€€ 것과 λ™μΌν•˜κ²Œ λ™μž‘ν•œλ‹€. 즉, ForeignKye 값이 λ°˜λ“œμ‹œ κ³ μœ ν•œ κ°’μ΄μ–΄μ•Όν•œλ‹€.

μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

μΌλŒ€μΌ κ΄€κ³„μ—μ„œ ν•œ λͺ¨λΈμ΄ λ‹€λ₯Έ λͺ¨λΈμ„ μ°Έμ‘°ν•˜λŠ” 방법이닀.

Many-to-One

ν•œ ν…Œμ΄λΈ”μ— μžˆλŠ” 두 개 μ΄μƒμ˜ λ ˆμ½”λ“œκ°€ λ‹€λ₯Έ ν…Œμ΄λΈ”μ— μžˆλŠ” ν•˜λ‚˜μ˜ λ ˆμ½”λ“œλ₯Ό μ°Έμ‘°ν•˜λŠ” κ²½μš°μ΄λ‹€.

image-20190307133408145

λ‹€μŒκ³Ό 같이 ForeignKeyλ₯Ό μ΄μš©ν•΄μ„œ λ‹€λŒ€μΌ 관계λ₯Ό μ„€μ •ν•  수 μžˆλ‹€. ν•œ 고객이 주문을 μ—¬λŸ¬κ°œ ν•  수 μžˆλŠ” κ²½μš°μ— λŒ€ν•΄μ„œ μ‚΄νŽ΄λ³΄μž

μ—¬κΈ°μ„œ ForeignKey의 ν•„λ“œλͺ…을 자유둭게 ν•  수 μžˆμ§€λ§Œ μ—°κ²°λŒ€μƒ λͺ¨λΈμ˜ μ†Œλ¬Έμžλ‘œ μ •ν•˜λŠ” 것을 ꢌμž₯ν•œλ‹€.

on_delete

μ˜΅μ…˜

μ„€λͺ…

CASCADE

λ ˆμ½”λ“œκ°€ μ‚­μ œλ˜λ©΄, κ·Έ λ ˆμ½”λ“œλ₯Ό μ™Έλž˜ν‚€λ‘œ μ°Έμ‘°ν•˜κ³  μžˆλŠ” λͺ¨λ“  λ ˆμ½”λ“œλ₯Ό ν•¨κ»˜ μ‚­μ œν•œλ‹€.(default)

PROTECT

μ™Έλž˜ν‚€κ°€ μ°Έμ‘°ν•˜κ³  μžˆλŠ” λ ˆμ½”λ“œλ₯Ό μ‚­μ œν•˜μ§€ λͺ»ν•˜κ²Œ λ§Œλ“ λ‹€. μ‚­μ œλ₯Ό μ‹œλ„ν•˜λŠ” 경우 ProtectedErrorκ°€ λ°œμƒν•œλ‹€.

SET_NULL

μ™Έλž˜ν‚€κ°€ μ°Έμ‘°ν•˜κ³  μžˆλŠ” λ ˆμ½”λ“œκ°€ μ‚­μ œλ˜λ©΄, μ™Έλž˜ν‚€ ν•„λ“œ 값이 null 값이 λœλ‹€. μ΄λ•Œ μ™Έλž˜ν‚€ ν•„λ“œμ— null=True μ˜΅μ…˜μ΄ μžˆμ„ λ•Œλ§Œ κ°€λŠ₯ν•˜λ‹€.

SET_DEFAULT

μ™Έλž˜ν‚€κ°€ μ°Έμ‘°ν•˜κ³  μžˆλŠ” λ ˆμ½”λ“œκ°€ μ‚­μ œλ˜λ©΄, μ™Έλž˜ν‚€ ν•„λ“œμ˜ 값이 κΈ°λ³Έκ°’μœΌλ‘œ 바뀐닀. (default μ˜΅μ…˜μ΄ μ„€μ •λ˜μ–΄ μžˆμ„ λ•Œλ§Œ κ°€λŠ₯ν•˜λ‹€.)

SET()

SET() ν•¨μˆ˜μ— κ°’μ΄λ‚˜ ν˜ΈμΆœκ°€λŠ₯ν•œ 객체λ₯Ό 전달할 수 μžˆλ‹€. μ™Έλž˜ν‚€κ°€ μ°Έμ‘°ν•˜λŠ” λ ˆμ½”λ“œκ°€ μ‚­μ œλ˜λ©΄ μ „λ‹¬λœ κ°’ λ˜λŠ” 객체λ₯Ό ν˜ΈμΆœν•œ 결과둜 μ™Έλž˜ν‚€λ₯Ό μ±„μš΄λ‹€.

μž¬κ·€μ  관계(Recursive)

ν•œ ν…Œμ΄λΈ”μ˜ λ ˆμ½”λ“œλ“€μ΄ 같은 ν…Œμ΄λΈ”μ˜ λ‹€λ₯Έ λ ˆμ½”λ“œλ“€κ³Ό 관계λ₯Ό ν˜•μ„±ν•˜λŠ” 것을 λ§ν•œλ‹€.

예λ₯Ό λ“€μžλ©΄, 같은 μŠ€ν„°λ””μ—μ„œ ν•œλͺ…이 λ‹€λ₯Έ μŠ€ν„°λ””μ›μ„ κ΄€λ¦¬ν•˜λŠ” 경우λ₯Ό 예둜 λ“€μˆ˜μžˆλ‹€.

ID

Name

Tutor_ID

1

Joe Satriani

1

2

John Petrucci

1

3

Steve Vai

1

λ‹€μŒκ³Ό 같이 'self' λ₯Ό μ „λ‹¬ν•˜μ—¬ μ„€μ •ν•  수 μžˆλ‹€.

μ •μ˜λ˜μ§€ μ•Šμ€ ν…Œμ΄λΈ”κ³Όμ˜ 관계

λͺ¨λΈμ„ 생성할 λ•Œ 아직 μ •μ˜λ˜μ§€ μ•Šμ€ ν…Œμ΄λΈ”κ³Όμ˜ 관계λ₯Ό μ„€μ •ν•΄μ•Όν•˜λŠ” κ²½μš°μ—λŠ” 'λͺ¨λΈλͺ…' 을 μ „λ‹¬ν•˜λ©΄λœλ‹€.

Many-to-Many

ν•˜λ‚˜μ˜ ν…Œμ΄λΈ”μ˜ ν•˜λ‚˜ μ΄μƒμ˜ λ ˆμ½”λ“œκ°€ λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ ν•˜λ‚˜ μ΄μƒμ˜ λ ˆμ½”λ“œλ₯Ό μ°Έμ‘°ν•˜λŠ” κ²½μš°μ΄λ‹€. λ‹€λŒ€λ‹€ 관계λ₯Ό ν‘œν˜„ν•  λ•Œ, 두 ν…Œμ΄λΈ” μ‚¬μ΄μ˜ 관계λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ μ°Έμ‘° 정보λ₯Ό 담은 μƒˆλ‘œμš΄ ν…Œμ΄λΈ”(μ€‘κ°œλͺ¨λΈ)을 μƒμ„±ν•˜κ²Œ λœλ‹€.

image-20190307141051268

ManyToManyFieldλ₯Όμ΄μš©ν•΄μ„œ μ„€μ •ν•  수 μžˆλ‹€.

ManyToManyField

λ‹€λŒ€λ‹€ κ΄€κ³„μ˜ ν•„λ“œλͺ…은 λ³΅μˆ˜ν˜•μœΌλ‘œ μ„€μ •ν•˜λŠ” 것을 ꢌμž₯ν•œλ‹€.

μ„œλ‘œ κ΄€κ³„λœ λͺ¨λΈλ“€ 쀑 μ–΄λŠ 곳에 ModelToManyFieldλ₯Ό μ„ μ–Έν•˜λ“  상관 μ—†μ§€λ§Œ ν•œ λͺ¨λΈμ—λ§Œ μ„ μ–Έν•΄μ•Όν•˜λ©°, μ˜λ―Έκ°€ μžμ—°μŠ€λ‘œμš΄ 곳에 μ„ μ–Έν•΄μ£ΌλŠ” 것을 ꢌμž₯ν•œλ‹€.

μ€‘κ°œλͺ¨λΈ(Intermediary Model)

두 ν…Œμ΄λΈ”μ˜ λ‹€λŒ€λ‹€ 관계λ₯Ό λ‚˜νƒ€λ‚΄μ£ΌλŠ” λͺ¨λΈμ΄λ‹€. 두 λͺ¨λΈμ˜ μ™Έλž˜ν‚€λ₯Ό ν•„λ“œλ‘œ κ°€μ§€κ³  μžˆλ‹€. ManyToManyField 둜 κ΄€κ³„μ„€μ •ν•˜λ©΄ μžλ™μœΌλ‘œ μƒμ„±λ˜μ§€λ§Œ 직접 생성할 μˆ˜λ„ μžˆλ‹€.

- though

- through_field

μ€‘κ°œ λͺ¨λΈμ„ 직접 μƒμ„±ν•˜λŠ” κ²½μš°μ— 두 ν…Œμ΄λΈ”μ„ μ°Έμ‘°ν•˜λŠ” μ™Έλž˜ν‚€ ν•„λ“œλ₯Ό λͺ…ν™•νžˆ μ„ μ–Έν•΄μ•Όν•œλ‹€.

  • μ†ŒμŠ€λͺ¨λΈ(Source Model) : ManyToManyFieldκ°€ μžˆλŠ” λͺ¨λΈμ„ λ§ν•œλ‹€.

  • νƒ€κ²Ÿλͺ¨λΈ(Target Model) : ManyToManyField에 인자둜 μ „λ‹¬λ˜λŠ” λͺ¨λΈμ„ λ§ν•œλ‹€.

λ§Œμ•½ μ€‘κ°œ λͺ¨λΈμ—μ„œ ν•˜λ‚˜ μ΄μƒμ˜ μ™Έλž˜ν‚€ ν•„λ“œκ°€ μ†ŒμŠ€ λͺ¨λΈ ν˜Ήμ€ νƒ€κ²Ÿ λͺ¨λΈμ„ μ°Έμ‘°ν•œλ‹€λ©΄, through_field μ˜΅μ…˜μ„ 톡해 μ™Έλž˜ν‚€ 섀정을 ν•΄μ€˜μ•Όν•œλ‹€.

μ—­μ°Έμ‘°

μ™Έλž˜ν‚€ ν•„λ“œλ₯Ό κ°€μ§„ μ†ŒμŠ€λͺ¨λΈμ— μ—°κ²°λœ νƒ€κ²Ÿλͺ¨λΈμ˜ μΈμŠ€ν„΄μŠ€λ“€μ€ μžμ‹ κ³Ό μ—°κ²°λœ μ†ŒμŠ€λͺ¨λΈμ˜ μΈμŠ€ν„΄μŠ€λ₯Ό κ°€μ Έμ˜¬ 수 μžˆλŠ” Manager λ₯Ό κ°€μ§€κ²Œλœλ‹€. ManagerλŠ” μ†ŒμŠ€λͺ¨λΈλͺ…_set 의 ν˜•νƒœλ‘œ μƒμ„±λœλ‹€. Reverse accessorλŠ” 관계λ₯Ό μ—­μ°Έμ‘°ν•  수 μžˆλŠ” 이 Mangerλ₯Ό μ˜λ―Έν•œλ‹€.

- related_name

μžλ™μœΌλ‘œ μƒμ„±λ˜λŠ” μ—­μ°Έμ‘° Manger이름을 related_name μ˜΅μ…˜μœΌλ‘œ 바꿔쀄 수 μžˆλ‹€.

λͺ¨λΈ ν™œμ„±ν™”

makemigrations

makemigartions λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•΄ λͺ¨λΈμ„ 생성, λ³€κ²½λœ 사항을 migration 으둜 μ €μž₯ν•˜λŠ” λͺ…령어이닀.

Migration

λͺ¨λΈμ˜ 변경사항을 μ €μž₯ν•˜λŠ” λ°©λ²•μœΌλ‘œ, λ””μŠ€ν¬μƒμ˜ 파일둜 μ‘΄μž¬ν•œλ‹€.

μƒμ„±λœ migration듀을 μ‹€ν–‰μ‹œμΌœμ£Όκ³ , μžλ™μœΌλ‘œ λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆλ₯Ό κ΄€λ¦¬ν•΄μ£ΌλŠ” migrate λͺ…λ Ήμ–΄κ°€ μžˆλ‹€.

sqlmigrate

migration의 이름을 인수둜 λ°›μ•„μ„œ μ‹€ν–‰ν•˜λŠ” SQL문을 λ³Ό 수 μžˆλ‹€. ν•˜μ§€λ§Œ μ‹€μ œλ‘œ migration을 μ‹€ν–‰ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€. λ‹¨μˆœνžˆ 결과만 좜λ ₯ν•  뿐이닀.

migrate

아직 μ μš©λ˜μ§€ μ•Šμ€ λͺ¨λ“  migration을 μˆ˜μ§‘ν•΄ μ‹€ν–‰ν•œλ‹€. django_migrations ν…Œμ΄λΈ”μ— λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ 적용 μ—¬λΆ€λ₯Ό κΈ°λ‘ν•œλ‹€.

Python Shell둜 λͺ¨λΈ 닀뀄보기

shell μ‹€ν–‰ν•˜κΈ°

manage.py λ₯Ό ν†΅ν•΄μ„œ shell을 μ‹€ν–‰ν•˜κ²Œ 되면 Djangoμ—μ„œ λ™μž‘ν•˜λŠ” λͺ¨λ“  λͺ…령을 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 μžˆλ‹€.

Imort Model

객체 μ‘°νšŒν•˜κΈ°

__str__

λ‹€μŒκ³Ό 같이 객체에 λŒ€ν•œ μ„€λͺ…을 __str__() λ₯Ό μΆ”κ°€ν•˜μ—¬ λ°”κΏ€ 수 μžˆλ‹€.

객체 μƒμ„±ν•˜κΈ°

ν•„ν„°λ§ν•˜κΈ°

데이터λ₯Ό 필터링 ν•˜λŠ” 것은 μ€‘μš”ν•œ 뢀뢄이닀. 필터링을 ν†΅ν•΄μ„œ μ›ν•˜λŠ” λ°μ΄ν„°λ§Œ κ°€μ Έμ˜¬ 수 μžˆλ‹€.

필터링에 κ΄€λ ¨ν•΄μ„œλŠ” 곡식 레퍼런슀λ₯Ό μ°Έμ‘°ν•˜λ©΄λœλ‹€.

λ‹€λ₯Έ λͺ¨λΈκ³Ό μ—°κ²°ν•˜κΈ°

order_by : μ •λ ¬ν•˜κΈ°

λͺ¨λΈμ˜ 속성에 따라 μ •λ ¬ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•  수 μžˆλ‹€.

속성λͺ…에 -κ°€ λΆ™μœΌλ©΄ λ‚΄λ¦Όμ°¨μˆœμ΄λ‹€.

μ°Έμ‘°

Last updated