웹 프로그래밍

Django Model - OneToOneField

728x90
반응형

* OneToOneField와 ForeignKey의 차이

OneToOneField와 ForeignKey(model, unique=True)는 개념적으로 같다. 둘의 차이는 역관계(reverse relationship)에 있다. One-to-one 모델의 역참조는 하나의 객체(single object) 를 반환하지만, ForeignKey의 역참조는 QuerySet 을 반환한다.

 

OneToOneField 언제쓰나? 예를 들어 1명의 유저는 하나의 프로필만을 가져야한다고 강제한다면 사용할 수 있다. ()첫번째 테이블이 User, 두번째 테이블은 Profile. 두번째 테이블은 반드시 첫번째 테이블과 한번만 매칭된다.

 

class Profile(models.Model):
    
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
    interest = models.ManyToManyField(Interest)
    stack = models.ManyToManyField(Stack)
class Interest(models.Model):
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name

class Stack(models.Model):
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name

OneToOneField와 ManyToManyField 사용예시

728x90
반응형

'웹 프로그래밍' 카테고리의 다른 글

Django Transaction  (0) 2021.07.20
GET과 POST 정리  (0) 2021.07.19
[AWS (5)] AWS HTTPS 설정  (0) 2021.07.17
[AWS (4)] AWS 도메인 연결  (0) 2021.07.17
[AWS (3)] AWS 기반 Stack 배포  (0) 2021.07.17