Tags
- DB
- 이진트리
- 스택
- 쟝고
- migrations
- Queue
- stack
- ORM
- drf
- create
- Tree
- 완전검색
- N:1
- 그리디
- SQL
- distinct
- count
- 백트래킹
- Django
- 통계학
- 트리
- delete
- 큐
- outer join
- 뷰
- update
- Article & User
- M:N
- Vue
- regexp
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Notice
Recent Posts
Link
데이터 분석 기술 블로그
DB에 대하여(12)_중개 모델 (feat. Django) 본문
1. 예약 모델 생성
환자 모델의 외래 키를 삭제하고 별도의 예약 모델을 새로 생성합니다.
예약 모델은 의사와 환자에 각각 N:1 관계를 갖습니다.
# hospitals/models.py
# 외래 키 삭제
class Patient(models.Model):
name = models.TextField()
def __str__(self):
return f'{self.pk}번 환자 {self.name}'
# 중개모델 작성
class Reservation(models.Model):
doctor = models.ForeignKey(Doctor, on_delete=models.CASCADE)
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
def __str__(self):
return f'{self.doctor_id}번 의사의 {self.patient_id}번 환자'
2. 예약 데이터 생성
데이터베이스 초기화 후 Migration 진행 및 shell_plus 실행합니다.
의사와 환자 생성 후 예약을 만듭니다.
doctor1 1= Doctor.objects.create(name='allie')
patient1 = Patient.objects.create(name='carol')
Reservation.objects.create(doctor=doctor1, patient=patient1)
3. 예약 정보 조회
의사와 환자가 예약 모델을 통해 각각 본인의 진료 내역을 확인합니다.
# 의사 -> 예약 정보 찾기
doctor1.reservation_set.all()
<QuerySet [<Reservation: 1번 의사의 1번 환자>]>
# 환자 -> 예약 정보 찾기
patient1.reservation_set.all()
<QuerySet [<Reservation: 1번 의사의 1번 환자>]>
4. 추가 예약 생성
1번 의사에게 새로운 환자 예약을 생성합니다.
patient2 = Patient.objects.create(name='duke')
Reservation.obejcts.create(doctor=doctor1, patient=patient2)
5. 예약 정보 조회
1번 의사의 예약 정보를 조회합니다.
# 의사 -> 환자 목록
doctor1.reservation_set.all()
<QuerySet [<Reservation: 1번 의사의 1번 환자>, <Reservation: 1번 의사의 2번 환자>]>
'DB' 카테고리의 다른 글
DB에 대하여(14)_'through' argument (feat. Django) (0) | 2024.05.01 |
---|---|
DB에 대하여(13)_ManyToManyField (feat. Django) (0) | 2024.04.30 |
DB에 대하여(11)_Many to many relationships (feat. Django) (0) | 2024.04.28 |
DB에 대하여(10)_댓글 DELETE (feat. Django) (0) | 2024.04.27 |
DB에 대하여(9)_댓글 CREATE & READ (feat. Django) (0) | 2024.04.26 |