Q. OneToOneField과 ForeignKey의 차이는?

go easy on NG·2023년 1월 14일
0

Q&A

목록 보기
6/18

OneToOneField는 ForeignKey(model, unique=True)와 같이 1:n의 관계다.

이 둘의 차이는 '역관계'다.

OneToOneField는 역참조하면 하나의 '객체'를 반환하지만
ForeignKey는 역참조하면 'QuerySet'을 반환한다.

풀어서 말하자면 만약 a1과 b1이라는 클래스가 있다.

a1과 b1은 1:n 관계로 b1원은 a1을 속성으로 가지고있다.

그래서 a1에서는 b1의 id값이 없고, b1에서는 a1의 id값이 있다.

즉, a1에서는 b1의 속성에 접근하기가 어렵고

b1은 a1의 속성에 접근할 수 있어 편집도 가능하다.

여기서 '역방향 참조'의 개념이 나오는데, 만약 a1에서 b1의 속성에 접근하고자 한다면 _set()를 사용해 모델에 접근, 편집, 쿼리사용이 가능하게 한다.

ex) a1.name_set.(id=a1.id)

참고 : https://whatisthenext.tistory.com/118

profile
🐥개발자

0개의 댓글