소프트웨어 마에스트로/BackEnd(Django)

[Django] manyTomany 필드 사용해보기

alpakaka 2024. 11. 17. 18:28

이것저것 찾아봤는데 어제의 상황에서는 ManyToMany 가 가장 베스트인 상황같다.

일단 통계내기도 편해보이고... 

 

일단 적용해보려고 한다.

일단 지연 행동 이유는 다음과 같고

이걸 이 순서 그대로 차곡차곡 db에 넣어주면 된다.

class DelayReason(models.Model):
    reason = models.CharField(max_length=255)

    def __str__(self):
        return self.reason

이런식으로 db를 만들어준다.

class Profile(models.Model):
    class Age(models.TextChoices):
        TEN = "10"
        TWENTY = "20"
        THIRTY = "30"
        FOURTY = "40"
        FIFTY = "50"

    user = models.OneToOneField(
        User,
        on_delete=models.CASCADE,
        related_name="profile",

    )
    username = models.CharField(max_length=255, null=True)
    age = models.CharField(
        max_length=30,
        choices=Age.choices,
    )
    job = models.CharField(max_length=255)
    sleep_time = models.TimeField(format="%H:%M")
    wake_time = models.TimeField(format="%H:%M")
    delay_reason = models.ManyToManyField(DelayReason)

 

심심하게 궁금했던 건데 왜 manyTomany 에는 null true 가 없는지 간단하게 물어봤다.

중간 테이블이 있는 상태라 그렇다고 하는 것 같다.

 

추가적으로 모든 profile 은 user 에 묶여있어야하는상태이지만

user가 필수적으로 Profile을 가지는 상태는 아니다. 이런상태는 oneToOne을 사용하는게 더 적절해보여서 수정해보았다.

잘 넣어주었다.