U E D R , A S I H C RSS

django/Model

λͺ¨λΈμ€ μ›Ή μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ μ‚¬μš©ν•  λ°μ΄ν„°λΌ λͺ…μ„Έν•œ pythonμ†ŒμŠ€μ½”λ“œμ΄λ‹€. λͺ¨λΈμ€ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μ—°λ™λ˜λ©°, κ°„λ‹¨ν•œ 경우 λͺ¨λΈ ν•˜λ‚˜κ°€ λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ” ν•˜λ‚˜λ‘œ λ§€ν•‘λœλ‹€. λ”°λΌμ„œ μ›Ή κ°œλ°œμžλŠ” λ°μ΄ν„°λ² μ΄μŠ€λΌ μ§μ ‘ μ†λŒ€μ§€ μ•Šκ³  μ†ŒμŠ€μ½”λ“œμΈ λͺ¨λΈμ„ λ³€κ²½ν•΄κ°€λ©΄μ„œ μž‘μ—…μ„ 진행할 수 μžˆλ‹€. λͺ¨λΈμ„ λ³€κ²½ν•  λ•Œλ§ˆλ‹€ djangoμ—μ„œ μ œκ³΅ν•˜λŠ” manage.py syncdbλΌ μ΄μš©ν•˜λ©΄ λ³€κ²½λœ λͺ¨λΈμ΄ λ°μ΄ν„°λ² μ΄μŠ€ ν…Œμ΄λΈ”μ— λ°˜μ˜λœλ‹€.

ν…Œμ΄λΈ” 생성

λͺ¨λΈμ€ μ‚¬μš©μžκ°€ μ§€μ •ν•˜μ§€ μ•ŠλŠ” 경우 기본적으둜 idλΌλŠ” μ΄λ¦„μœΌλ‘œ μ •μˆ˜ν˜• μ£Όν‚€λΌ κ°€μ§„λ‹€.
class Risk(models.Model):
    #id = models.AutoField()
    name= models.CharField(maxlength=10)
    ...

λͺ¨λΈμ— ν•΄λ‹Ήν•˜λŠ” ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜λŠ” SQL문은 python manage.py sql <app name>으둜 확인할 수 μžˆλ‹€. μœ„μ— ν•΄λ‹Ήν•˜λŠ” SQL문은 λ‹€μŒκ³Ό κ°™λ‹€.
CREATE TABLE "manage_risk" (
    "id" integer NOT NULL PRIMARY KEY,
    "name" varchar(10) NOT NULL
);

λ‹€ λŒ€ 일 관계

λ‹€ λŒ€ 일 κ΄€κ³„μ—μ„œλŠ” λ‹€ μͺ½μ—μ„œ 일μͺ½μ„ μ°Έμ‘°ν•˜λ„λ‘ μ„계해야 ν•œλ‹€.
class RiskReport(models.Model):
    risk= models.ForeignKey(Risk)
    ...
ν˜Ήμ€ λͺ¨λΈμ΄ λ˜λŠ” 클래슀의 이름을 λ¬Έμžμ—΄λ‘œ 지정할 μˆ˜λ„ μžˆλ‹€. μ΄λŠ” ν΄λž˜μŠ€λΌ μ •μ˜ν•˜λŠ” μˆœμ„œμ— 상관없이 ν•œ λͺ¨λΈμ΄ λ‹€λ₯Έ λͺ¨λΈμ„ μ°Έμ‘°ν•  수 μžˆλ„λ‘ ν•œλ‹€.
class RiskReport(models.Model):
    risk= models.ForeignKey('Risk')
    ...

λ‹€ λŒ€ λ‹€ 관계

λ‹€ λŒ€ λ‹€ κ΄€κ³„μ—μ„œλŠ” μ–΄λŠ ν•œ μͺ½ λͺ¨λΈμ— λ‹€ λŒ€ λ‹€ κ΄€κ³„μž„μ„ ν‘œν˜„ν•œλ‹€. ν•˜μ§€λ§Œ μ–‘μͺ½ λͺ¨λ‘μ— λ‹€ λŒ€ λ‹€ ν•„λ“œλΌ μ„μΉ˜ν•˜λ©΄ μ•ˆλœλ‹€. DjangoλŠ” λ‹€ λŒ€ λ‹€ 관계인 경우 μ΄λΌ ν‘œν˜„ν•˜λŠ” ν…Œμ΄λΈ”μ„ μžλ™μœΌλ‘œ μƒμ„±ν•œλ‹€. λ‹€μŒμ€ Employee와 Deparmentλͺ¨λΈ 사이에 λ‹€ λŒ€ λ‹€ κ΄€κ³„λΌ λ‚˜νƒ€λ‚΄κ³  μžˆλ‹€.
class Employee(models.Model):
    name= models.CharField(maxlength=100)
    email= models.EmailField()

class Department(models.Model):
    name= models.CharField(maxlength=100)
    location= models.CharField(maxlength=200)
    employees= models.ManyToManyField(Employee)
λ‹€λŒ€λ‹€ κ΄€κ³„λŠ” μ€λ” λ³΅μž‘ν•΄μ§ˆ 수 μžˆλ‹€. 두 λͺ¨λΈ 사이에 관계에 ν•΄λ‹Ήν•˜λŠ” ν…Œμ΄λΈ”μ΄ λ˜λ‹€λ₯Έ 속성이 ν•„μš”ν•œ κ²½μš°μ΄λ‹€. 이 λ•ŒλŠ” 쀑간 역할을 ν•˜λŠ” λͺ¨λΈμ„ 직접 μƒμ„±ν•˜κ³  μ–‘μͺ½ λͺ¨λΈμ„ μ°Έμ‘°ν•˜λ„λ‘ λ§Œλ“ λ‹€. λ‹€μŒμ€ RiskReport와 ControlReport사이 λ‹€ λŒ€ λ‹€ κ΄€κ³„μ—μ„œ 보고된 μœ„ν—˜μ— λŒ€ν•΄μ„œ λŒ€μ²˜ λ°©μ•ˆμ΄ μ μ ˆν–ˆλŠ”μ§€ ν‰κ°€ν•˜λŠ” is_vaild속성을 κ°€μ§€λŠ” RiskControlλͺ¨λΈμ„ 보여주고 μžˆλ‹€.
class RiskReport(models.Model):

class ControlReport(models.Model):

class RiskControl(models.Model):
    risk_report= models.ForeignKey(RiskReport)
    control_report= models.ForeignKey(ControlReport)
    is_vaild= models.BooleanField()
ν•˜μ§€λ§Œ 이 경우 risk_report와 control_report의 ν•©μ„±ν‚€λΌ μ‚¬μš©ν•˜λ„λ‘ μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€.

Admin

DjangoλŠ” μ •μ˜ν•œ λͺ¨λΈμ— Adminν΄λž˜μŠ€λΌ μž¬μ •μ˜ν•΄μ„œ μ΄λΌ μ‚½μž…, μ‚­μ œ, κ°±μ‹ ν•  수 μžˆλŠ” 기본적인 κ΄€λ¦¬μž μΈν„°νŽ˜μ΄μŠ€λΌ μžλ™μœΌλ‘œ 생성해μ€λ‹€. μ‚¬μš©μž μΈν„°νŽ˜μ΄μŠ€λŠ” μž…λ ₯ ν•­λͺ©μ„ μ›ν•˜λŠ”λŒ€λ‘œ λ°°μΉ˜ν•  수 있으며, μ›ν•˜λŠ” λ””μžμΈλ„ μ μš©ν•  수 μžˆλ‹€. μ΄κ²ƒμœΌλ‘œ 기본적인 μž…λ ₯ μ‹œμŠ€ν…œμ€ λ§Œλ“€μ–΄μ‘Œλ‹€.
Screenshot-Django-site-admin.png

Screenshot-ManyToOne.png

Screenshot-ManyToMany.png

----
django/Example
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:39
Processing time 0.0175 sec