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