
νλλ λ°μ΄ν°λ² μ΄μ€μ ν μ΄λΈμμ μ΄(column)μ μλ―Ένλ€. Django μμ νλλ λͺ¨λΈμ μμ±ν λ νμμ μΈ μμμ΄λ©°, λͺ¨λΈν΄λμ€μ μμ±μΌλ‘ λνλΈλ€. νλλ₯Ό clean, save, delete λ±κ³Ό κ°μ΄ λͺ¨λΈ API μ λμΌν μ΄λ¦μΌλ‘ μμ±νμ§ μλλ‘ μ£Όμν΄μΌ νλ€.
class λͺ¨λΈμ΄λ¦(models.Model):
νλμ΄λ¦1 = models.νλνμ
(νλμ΅μ
)
νλμ΄λ¦2 = models.νλνμ
(νλμ΅μ
)
νλλ Field ν΄λμ€μ μΈμ€ν΄μ€μ΄λ€. Django λ νλλ₯Ό ν΅ν΄ λ€μκ³Ό κ°μ μ¬νμ μ μνλ€.
- ν μ΄λΈμ μ΄ μ μ₯ν λ°μ΄ν°μ μ ν (λ¬Έμμ΄, μ μ λ±)
- νΌ νλλ₯Ό λ λλ§ν λ μ¬μ©ν κΈ°λ³Έ HTML μμ ―
- κ΄λ¦¬μ νμ΄μ§μ μλμμ± λλ νΌλ€μ μ μ©λ μ΅μ μꡬμ¬ν
β BooleanField
HTML μμ ― : CheckboxInput
νμ μ΅μ
: -
μ€λͺ
: True/False κ°μ κ°μ§λ νλ.
β CharField
HTML μμ ― : TextInput
νμ μ΅μ
: max_length
μ€λͺ
: λ¬Έμμ΄ λ°μ΄ν°λ₯Ό μ μ₯νλ νλ. μ΅λ κΈμ μλ₯Ό λ°λμ μ§μ ν΄μ£Όμ΄μΌ νλ€.
β DateField
HTML μμ ― : TextInput
νμ μ΅μ
: -
μ€λͺ
: datetime.date μΈμ€ν΄μ€μΈ λ μ§ λ°μ΄ν°λ₯Ό μ μ₯νλ νλ. λ¬λ ₯ μμ ―κ³Ό μ€λ λ μ§ μ
λ ₯ κΈ°λ₯μ κΈ°λ³Έμ 곡νλ€.
β DateTimeField
HTML μμ ― : TextInput
νμ μ΅μ
: -
μ€λͺ
: datetime.datetime μΈμ€ν΄μ€μΈ λ μ§μ μκ° λ°μ΄ν°λ₯Ό μ μ₯νλ νλ. λ κ°μ TextInput, λ¬λ ₯ μμ ―, μ€λ λ μ§ μ
λ ₯ κΈ°λ₯μ κΈ°λ³Έμ 곡νλ€.
β FloatField
HTML μμ ― : NumberInput
νμ μ΅μ
: -
μ€λͺ
: Pythonμ floatκ³Ό κ°μ μ€μ λ°μ΄ν°λ₯Ό μ μ₯νλ νλ.
β IntegerField
HTML μμ ― : NumberInput
νμ μ΅μ
: -
μ€λͺ
: Pythonμ integerκ³Ό κ°μ μ μ λ°μ΄ν°λ₯Ό μ μ₯νλ νλ. -2147483648κ³Ό 2147483647 μ¬μ΄μ κ°μ μ μ₯ν μ μλ€.
β TextField
HTML μμ ― : Textarea
νμ μ΅μ
: -
μ€λͺ
: κΈμ μ μ νμ΄ μλ λ¬Έμμ΄ λ°μ΄ν°λ₯Ό μ μ₯νλ νλ. max_length κ°μ μ§μ νλ©΄ νΌμμλ μ νμ΄ λμ§λ§, λ°μ΄ν°λ² μ΄μ€μλ μν₯μ μ£Όμ§ μμ.
β Forignkey
νμ μ΅μ
: to, on_delete
μ€λͺ
: νλλ₯Ό μΈλν€λ‘ μ€μ νλ€. λ€λ₯Έ ν
μ΄λΈμ λ μ½λμ μΌλλ€ κ΄κ³λ₯Ό νμ±νλ€. κ΄κ³ μ€μ λμμ΄ λλ λͺ¨λΈκ³Ό λ μ½λ μμ μ μ²λ¦¬ λ°©μμ νμλ‘ μ€μ ν΄μ£Όμ΄μΌ νλ€.
β ManytoManyField
νμ μ΅μ
: to
μ€λͺ
: νλκ° λμ ν
μ΄λΈκ³Ό λ€λλ€ κ΄κ³λ₯Ό νμ±νλλ‘ μ€μ νλ€. κ΄κ³ μ€μ λμμ΄ λλ λͺ¨λΈμ νμλ‘ μ€μ ν΄μ£Όμ΄μΌ νλ€.
β OneToOneField
νμ μ΅μ
: to, on_delete
μ€λͺ
: νλκ° λμ ν
μ΄λΈκ³Ό μΌλμΌ κ΄κ³λ₯Ό νμ±νλλ‘ μ€μ νλ€. κ΄κ³ μ€μ λμμ΄ λλ λͺ¨λΈκ³Ό λ μ½λ μμ μ μ²λ¦¬ λ°©μμ νμλ‘ μ€μ ν΄μ£Όμ΄μΌ νλ€.
β null
True μ΄λ©΄ λ°μ΄ν°λ² μ΄μ€μ λΉ κ°μ null κ°μΌλ‘ μ μ₯νλ€. κΈ°λ³Έκ°μ False μ΄λ€.
field = models.IntegerField(null=True)
β blank
True μ΄λ©΄ νλκ° λΉ κ°μ λ°μ μ μκ² λλ€. κΈ°λ³Έκ°μ False.
field = models.IntegerField(blank=True)
β choices
κΈΈμ΄κ° 2μΈ ννλ€μ 리μ€νΈ νΉμ ννμ μ νμ§ λ³μλ‘ μ§μ ν μ μλ€. choices μ΅μ
μ μ νμ§ λ³μλ₯Ό μ§μ ν΄μ£Όλ©΄ λλ€.
# μ νμ§ λ³μ μ
SHIRT_SIZES = (
('S', 'Small'),
('M', 'Medium'),
('L', 'Large'),
)
field = models.CharField(max_length=1, choices=SHIRT_SIZES)
β default
νλμ κΈ°λ³Έκ°μ μ§μ ν΄μ€λ€. νλμ μ무κ²λ μ
λ ₯νμ§ μμ κ²½μ° κΈ°λ³Έκ°μ΄ λ€μ΄κ°λ€.
field = models.IntegerField(default=0)
β help_text
νλμ λν μ€λͺ
μ μΆκ°ν μ μλ€. κ΄λ¦¬μ νμ΄μ§μμ νμΈ κ°λ₯.
company_name = models.CharField(max_length=10, help_text='Type company name here')
β primary_key
νλλ₯Ό κΈ°λ³Έν€λ‘ μ€μ νλ€. κΈ°λ³Έν€λ₯Ό μ€μ νμ§ μμΌλ©΄ μλμ μΌλ‘ κ³ μ ν μ μκ°μ κ°μ§λ id κΈ°λ³Έν€ νλκ° μμ±λλ€. κΈ°λ³Έν€ νλλ μ½κΈ°μ μ©μ΄λ©°, κ°μ λ°κΎΈλ©΄ κΈ°μ‘΄ λ μ½λμ κΈ°λ³Έν€ νλ κ°μ΄ λ°λλ κ²μ΄ μλκ³ λ°κΎΈλ €λ κ°μ κΈ°λ³Έν€ κ°μΌλ‘ κ°μ§λ λ μ½λκ° μλ‘ μμ±λλ€.
name = models.CharField(max_length=100, primary_key=True)
β unique
νλκ° νμ κ³ μ ν κ°λ§ κ°μ§λλ‘ μ€μ νλ€. λμΌν νλ κ°μ κ°μ§λ λ μ½λλ₯Ό μμ±νλ €κ³ ν κ²½μ° IntegrityError κ° λλ€. ManyToManyField μ OneToOneField μλ μ¬μ©ν μ μλ€.
β verbose_name
κ΄κ³μ€μ νλλ₯Ό μ μΈν λͺ¨λ νλνμ
λ€μ 첫 λ²μ§Έ μμΉ μΈμλ‘ λ¬Έμμ΄μ λ°μ μ μλ€. μ΄ λ¬Έμμ΄μ νλλ₯Ό μ’ λ ꡬ체μ μΌλ‘ λνλ΄λ μ΄λ¦μ΄ λλ€. verbosename μ μ€μ νμ§ μλ κ²½μ°, κΈ°λ³Έκ°μΌλ‘ λ₯Ό 곡백문μλ‘ μΉνν λ³μμ΄λ¦μ΄ verbose_name μ΄ λλ€.
# verbose_name μ 'person's first name' μ΄ λλ€.
# λ¬Έμμ΄μ μ λ¬νμ§ μλ κ²½μ° verbose_name μ 'first name' μ΄ λλ€.
first_name = models.CharField("person's first name", max_length=20)
ForignKey, OneToOneField, ManyToManyField λ 첫 λ²μ§Έ μμΉμΈμλ‘ κ΄κ³ λμ λͺ¨λΈμ λ°μΌλ―λ‘ verbose_name μ΄λΌλ ν€μλ μΈμλ‘ μ λ¬ν΄μ£Όμ΄μΌνλ€.
poll = models.ForignKey(Poll, on_delete=models.CASCADE, verbose_name='the related poll')
κ΄λ‘μ μΌλ‘ verbose_name μ 첫 κΈμλ₯Ό λλ¬Έμλ‘ νκΈ°νμ§ μλλ€. Django λ μ΄ μ΄λ¦μ μ¬μ©ν λ μλμΌλ‘ 첫 κΈμλ₯Ό λλ¬Έμ νκΈ°νλ€.
β db_colmn
νλ μ΄λ¦μ μ¬μ©μ μ§μ ν΄μ€ μ μλ€. μ΄ μ΅μ
μ΄ μ£Όμ΄μ§μ§ μλ κ²½μ° κΈ°λ³Έμ μΌλ‘λ λͺ¨λΈμ μμ± μ΄λ¦μ΄ ν
μ΄λΈμ νλ μ΄λ¦μ΄ λλ€. μ΄ μ΅μ
μ μ¬μ©νλ©΄ Python μμ½μ΄ λ° λ³μλͺ
μ μ½, νμ΄ν(-), SQL μμ½μ΄ λ±μ νλ μ΄λ¦μΌλ‘ μ¬μ©ν μ μκ² λλ€.
# λ°μ΄ν°λ² μ΄μ€μ νλ μ΄λ¦μ db-field-name λ‘ νμλλ€.
field_name = models.CharField(max_length=30, db_colmn='db-field-name')
class Example(models.Model):
pass = models.CharField(max_length=100) # pass λ Python μμ½μ΄μ΄λ€.
class Example(model.Model):
ex__field = models.CharField(max_length=100) # ex__field λ μ°μλ μΈλμ€μ½μ΄ λ κ°λ₯Ό κ°μ§κ³ μλ€.