[Django] Field

Choi RimΒ·2021λ…„ 7μ›” 17일
0

Django

λͺ©λ‘ 보기
5/21
post-thumbnail

Database Field

  • λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ Fieldλž€ μ„Έλ‘œ λ°©ν–₯으둜 ν‘œμ‹œλœ μ—΄, column을 λ§ν•œλ‹€. ν•„λ“œλŠ” DB Tableμ—μ„œ κ°€λ‘œλ‘œ ν‘œμ‹œν•œ λ ˆμ½”λ“œ (Record)에 λŒ€ν•œ κ°œλ³„μ μΈ 속성값을 ν‘œμ‹œν•œλ‹€. DB ν•„λ“œλΌκ³ λ„ ν•œλ‹€. λ°˜λŒ€λ§μ€ λ ˆμ½”λ“œ(record)이닀.


사진 좜처 - ν•΄μ‹œλ„·

ν•„λ“œ μ˜΅μ…˜ (Field options)

  • 각각의 ν•„λ“œλ“€μ€ ν•΄λ‹Ή ν•„λ“œμ— νŠΉν™”λœ 독립 λ³€μˆ˜λ₯Ό κ°–λŠ”λ‹€.
    • ex) CharField 와 CharField 의 μ„œλΈŒν΄λž˜μŠ€λ“€μ€,
      max_length 같은, 데이터λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄μ„œ 길이λ₯Ό μ •μ˜ν•˜λŠ” λ…λ¦½λœ λ³€μˆ˜λ“€μ„ κ°–κ²Œ λœλ‹€.
    • λ˜ν•œ λͺ¨λ“  νƒ€μž…μ— μ μš©λ˜λŠ” 곡톡 독립 λ³€μˆ˜λ„ μ‘΄μž¬ν•œλ‹€.

ν•„λ“œ μœ ν˜• (Field types)

μ‚¬μš©ν–ˆλ˜ ν•„λ“œ μœ ν˜•λ§Œ 정리

CharField

  • class CharField(max_length=None, **options)
  • μž‘κ±°λ‚˜ 큰 λ¬Έμžμ—΄μ„ μœ„ν•œ λ¬Έμžμ—΄ ν•„λ“œ
  • 문자의 μ΅œλŒ€ 길이λ₯Ό μ„€μ •ν•΄μ•Ό ν•œλ‹€.
    • CharFieldμ—λŠ” μΆ”κ°€ 인수(extra arguments)κ°€ μ‘΄μž¬ν•œλ‹€.
      • CharField.max_length
        • ν•„μˆ˜
        • ν•„λ“œμ˜ μ΅œλŒ€ 길이(문자) μ„€μ •
  • λ§Žμ€ μ–‘μ˜ ν…μŠ€νŠΈλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ TextField.

FloatField

  • class FloatField(**options)
  • Pythonμ—μ„œ float μΈμŠ€ν„΄μŠ€λ‘œ ν‘œν˜„λ˜λŠ” μ†Œμˆ˜μ  μˆ«μžμ΄λ‹€.
  • 뢀동 μ†Œμˆ˜μ  숫자 데이터에 μ‚¬μš©ν•˜λŠ” 근사 숫자 데이터 ν˜•μ‹μ΄λ‹€.
    • 뢀동 μ†Œμˆ˜μ  λ°μ΄ν„°λŠ” 근사값(참값에 κ°€κΉŒμš΄ κ°’)이닀. 데이터 ν˜•μ‹ λ²”μœ„μ˜ λͺ¨λ“  값을 μ •ν™•ν•˜κ²Œ ν‘œμ‹œν•  μˆ˜λŠ” μ—†λ‹€.
    • float 데이터 ν˜•μ‹μ—λŠ” 근사 속성이 μžˆμœΌλ―€λ‘œ 금육 κ΄€λ ¨ μ‘μš© ν”„λ‘œκ·Έλž¨κ³Ό 같이 반올림 λ˜λŠ” λ“±κ°€ 확인 등이 μ΄λ£¨μ–΄μ§€λŠ” μž‘μ—…μ—μ„œ μ •ν™•ν•œ μˆ«μžκ°€ ν•„μš”ν•œ κ²½μš°μ—λŠ” μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것이 μ’‹λ‹€.
    • λŒ€μ‹  integer, decimal, money λ˜λŠ” smallmoney 데이터 ν˜•μ‹μ„ μ‚¬μš©ν•˜μž.

TextField

  • 큰 ν…μŠ€νŠΈ ν•„λ“œ
  • λ¬Έμžμ—΄ 수λ₯Ό μ œν•œν•˜κ³  μ‹ΆμœΌλ©΄ CharFieldλ₯Ό μ‚¬μš©ν•˜λ©΄ λœλ‹€.

DecimalField

  • class DecimalField(max_digits=None, decimal_places=None, **options)
  • FloatFieldλŠ” μ†Œμˆ˜μ μ˜ 근사값을 μ œκ³΅ν•˜μ§€λ§Œ DeciamalFieldλŠ” μ†Œμˆ˜μ  자리λ₯Ό μ„€μ •ν•΄μ„œ μ›ν•˜λŠ” 자릿수만큼 좜λ ₯이 κ°€λŠ₯ν•˜λ‹€.
  • 두 개의 ν•„μˆ˜ 인수(required arguments)κ°€ μ‘΄μž¬ν•œλ‹€.
    • DecimalField.max_digits
      • μˆ«μžμ— ν—ˆμš©λ˜λŠ” μ΅œλŒ€ 자릿수
    • DecimalField.decimal_places
      • μˆ«μžμ™€ ν•¨κ»˜ μ μš©ν•  μ†Œμˆ˜ 자릿수
models.DecimalField(..., max_digits=5, decimal_places=2)
  • μ΅œλŒ€ 숫자 자릿수 5, μ΅œλŒ€ μ†Œμˆ˜ 자릿수 2인 μ†Œμˆ˜μ  숫자 ν•„λ“œ

관계 ν•„λ“œ (Relationship fields)

ForeignKey

  • class ForeignKey(to, on_delete, **options)
  • λ‹€λŒ€μΌ 관계 ν•„λ“œ
  • λͺ¨λΈμ΄ κ΄€λ ¨λœ ν΄λž˜μŠ€μ™€ on_delete μ˜΅μ…˜μ˜ 두가지 μ˜΅μ…˜(positional arguments)이 ν•„μš”ν•˜λ‹€.
  • μž¬κ·€ 관계(μžμ‹ κ³Ό λ‹€λŒ€μΌ 관계가 μžˆλŠ” 객체)λ₯Ό λ§Œλ“€ μˆ˜λ„ μžˆλ‹€.
    • models.ForeignKey('self', on_delete=models.CASCADE)

ForeignKey 인수(arguments)

  • ForeignKeyλŠ” 관계가 μž‘λ™ν•˜λŠ”λ° ν•„μš”ν•œ 세뢀사항을 μ •μ˜ν•˜λŠ” λ‹€λ₯Έ μΈμˆ˜λ“€μ„ ν—ˆμš©ν•œλ‹€.
ForeignKey.on_delete
  • ForeignKey둜 μ°Έμ‘°ν•˜λ˜ 객체가 μ‚­μ œλ˜λ©΄, DjangoλŠ” on_delete 인수의 SQL μ œμ•½ 쑰건을 λ™μž‘ν•œλ‹€.
    • CASCADE
      • 계단식 μ‚­μ œ.
      • DjangoλŠ” ON DELETE CASCADE SQL μ œμ•½ 쑰건의 λ™μž‘μ„ 이어받고 ForeignKeyλ₯Ό ν¬ν•¨ν•˜λŠ” 객체도 μ‚­μ œν•œλ‹€.

<μ°Έκ³ >

profile
https://rimi0108.github.io/

0개의 λŒ“κΈ€