WEB/Django prac

[Django prac][DB N:M ① 의사와 환자] 7. shell_plus / 다대다 add, remove

bay07 2024. 4. 8. 16:08

1. shell_plus 들어가기

python manage.py shell_plus

 

2. 의사, 환자 만들기 

doctor1 = Doctor.objects.create(name='allie')
patient1 = Patient.objects.create(name='carol')
patient2 = Patient.objects.create(name='duke')

 

3. add 다대다 관계 추가 

# 1번 환자가 1번 의사를 예약
patient1.doctors.add(doctor1)
# 내가 오늘 진로보는 의사를 다 알고 싶다. 참조
patient1.doctors.all()

# 내가 오늘 보는 환자를 모두 보고 싶다. 역참조
doctor1.patient_set.all()
# 의사 1번이 환자 2번을 예약한다
doctor1.patient_set.add(patient2)
# 의사가 환자 조회
doctor1.patient_set.all()

# 환자가 의사 조회 
patient2.doctors.all()
patient1.doctors.all()

 

3. remove 다대다 관계 지우기

# 의사에게 일이 생겼음. 환자와의 예약을 취소하겠다
doctor1.patient_set.remove(patient1)
doctor1.patient_set.all()
patient1.doctors.all()
# 환자에게 일이 생겼음. doctor1과의 예약을 취소하겠다
patient2.doctors.remove(doctor1)
patient2.doctors.all()
doctor1.patient_set.all()