WEB/Django prac
[Django prac][DB N:M ① 의사와 환자] 8. 예약 정보에 추가 데이터가 필요하다면?
bay07
2024. 4. 8. 16:15
예약 정보에 병의 증상, 예약일 등 추가적인 정보를 포함시키고 싶다.
그러면, 테이블을 다시 만들어야한다.
그리고 through = "Reservation"을 통해서 Reservation을 중개 테이블로 쓰겠다는 사실을 알려야한다.
그러면 add, remove를 그대로 가져갈 수 있다.
# hospitals > models.py
from django.db import models
class Doctor(models.Model):
name = models.TextField()
def __str__(self):
return f'{self.pk}번 의사 {self.name}'
class Patient(models.Model):
doctors = models.ManyToManyField(Doctor, through='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}번 환자'
# db 초기화
db.sqlite3 파일 지우기
hospitals > migrations에서 0001 이렇게 생긴 설계도 지우기
(__init__.py 는 지우지 말기)
# migrate
python manage.py makemigrations
python manage.py migrate