Tags
- Django
- 이진트리
- stack
- 뷰
- 트리
- distinct
- Vue
- 완전검색
- 그리디
- N:1
- ORM
- 쟝고
- SQL
- DB
- create
- 통계학
- 큐
- drf
- migrations
- regexp
- Queue
- outer join
- Article & User
- M:N
- update
- 백트래킹
- count
- delete
- 스택
- Tree
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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에 대하여(14)_'through' argument (feat. Django) 본문
'through' argument
중개 테이블에 '추가 데이터'를 사용해 M:N 관계를 형성하려는 경우에 사용합니다.
through 설정 및 Reservation Class를 수정합니다.
이제는 예약 정보에 "증상"과 "예약일"이라는 추가 데이터가 생깁니다.
class Patient(models.Model):
doctors = models.ManyToManyField(Doctor, throug='Reservation')
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)
symptom = models.TextField()
reserved_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'{self.doctor.pk}번 의사의 {self.patient.pk}번 환자'
데이터베이스 초기화 후 Migration 진행 및 shell_plus 실행합니다.
의사 1명과 환자 2명을 생성합니다.
doctor1 = Doctor.objects.create(name='allie')
patient1 = Patient.objects.create(name='carol')
patient2 = Patient.objects.create(name='duke')
예약 생성 방법 (1) _ Reservation class를 통한 예약 생성
reservation1 = Reservation(doctor=doctor1, patient=patient1, symptom='headache')
reservation1.save()
doctor1.patient_set.all()
<QuerySet [<Patient: 1번 환자 carol>]>
patient1.doctors.all()
<QuerySet [<Doctor: 1번 의사 allie>]>
예약 생성 방법 (2) _ Patient 객체를 통한 예약 생성(through_defaults)
patient2.doctors.add(doctor1, through_defaults={'symptom': 'flu'})
doctor1.patient_set.all()
<QuerySet [<Patient: 1번 환자 carol>, <Patient: 2번 환자 duke>]>
patient2.doctors.all()
<QuerySet [<Doctor: 1번 의사 allie>]>
생성된 예약을 확인합니다.
의사와 환자가 각각 예약을 삭제합니다.
doctor1.patient_set.remove(patient1)
patient2.doctors.remove(doctor1)
M:N 관계 주요 사항
'DB' 카테고리의 다른 글
DB에 대하여(16)_좋아요 모델 관계 설정 (feat. Django) (0) | 2024.05.03 |
---|---|
DB에 대하여(15)_Django ManyToManyField (feat. Django) (0) | 2024.05.02 |
DB에 대하여(13)_ManyToManyField (feat. Django) (0) | 2024.04.30 |
DB에 대하여(12)_중개 모델 (feat. Django) (0) | 2024.04.29 |
DB에 대하여(11)_Many to many relationships (feat. Django) (0) | 2024.04.28 |