Model relationship - pai-plznw4me/django-initializer GitHub Wiki
μ₯κ³ μμ One to Many λͺ¨λΈμ μμ±ν λ λ ForeignKey
μ μ¬μ©ν΄μ μ°κ²°νλ€.
μ¬κ·μ κ΄κ³(μκΈ°μμ μ μ°Έμ‘°νλκ²λ κ°λ₯νλ€. κ·Έλλ μλμ κ°μ΄ model λΆλΆμ 'self'
μ λ£μ΄μ£Όλ©΄ λλ€.)
(μΉκ΅¬ μΆκ°
κΈ°λ₯μ μκ°ν΄λ³΄μ)
To create a recursive relationship an object that has a many-to-one relationship with itself use
models.ForeignKey('self', on_delete=models.CASCADE).
μ₯κ³ κ³΅μλ¬Έμμμ μκ°νλ
One to Many
μλμ°¨μ μλμ°¨ μμ° κ³΅μ₯μ κ΄κ³λ₯Ό νννλ€.
νλμ 곡μ₯(manufacturer
)μμ μ¬λ¬car
λ₯Ό μμ±νλ€.
from django.db import models
class Car(models.Model):
manufacturer = models.ForeignKey(
'Manufacturer',
on_delete=models.CASCADE,
)
# ...
class Manufacturer(models.Model):
# ...
pass

μμ μ μ°Έμ‘°νλ table μ instance μ μ°Ύκ³ μΆμλλ <instanceμ΄λ¦>_set
μ μ¬μ©νλ€.
μ μλ μμ μμλ νΉμ Manufacture
instance μ μ°Έμ‘°νλ λͺ¨λ Car
instances λ€μ κ°μ Έμ¨λ€.
# μμ 1
m = Manufacturer.objects.first()
cars = m.car_set.all()
# μμ 2
q.choice_set.create(choice_text='Not much', votes=0)
q.choice_set.create(choice_text='The sky', votes=0)
c = q.choice_set.create(choice_text='Just hacking again', votes=0)
reference official guide recursive relationship
Many to Many field μ Admin Site μ λ±λ‘μ μλμ κ°μ μμ μν
class ChecklistAdmin(admin.ModelAdmin):
model = Checklist
list_display = ["start_date", "end_date", "end_time", "desc", "complete"]
filter_horizontal = ("assignee",)
@csrf_exempt
def show_checklist(request):
"""
Description:
checklist instnace μ μμ± ν ν 'show_checklist.html' νμ΄μ§ νλ¨
ν
μ΄λΈ body λΆλΆμ λΆμ¬ λ£μ΅λλ€.
"""
checklist = Checklist.objects.all()
assignee = Checklist.objects.first().assignee.all()
context = {'checklist_assignee': zip(checklist, assignee)}
content = render(request, template_name='school_management_app/show_checklist.html', context=context).content
content = content.decode('utf-8')
data = {'content': content}
return JsonResponse(data)
write
trgt_publisher = CustomUser.objects.get(username=random_publisher[i][0])
todo = Todo.objects.create(start_date=rand_start_date[i],
end_date=rand_end_date[i],
publisher=trgt_publisher,
desc=random_desc[i][0],
complete=random_complete[i][0])
for assignee_name in random_assignee[i]:
tmp_user = CustomUser.objects.get(username=assignee_name)
todo.assignee.add(tmp_user)