본문 바로가기
취대넓얕

[기술면접] 6일차 문답 | Django ORM

by 째깍단 2023. 7. 26.

Django ORM에서 queryset object 차이점에 대해서 설명하시오

.get()으로 데이터를 가져오면 object 형식
.filter()으로 queryset 형식

차이점

get은 인자를 바탕으로 가져오는 데이터가 없으면 에러가 발생하지만

queryset은 데이터가 없어도 빈리스트를 가져와 오류가 나지 않고 작동한다

 

때문에 .get 은 try except로 예외처리를 작성하거나 get_object_or_404기능을 사용하여 데이터가 존재하지않을 때의 에러를 방지,

.filter는 빈리스트인 경우를 따로 처리하여 기능을 보완할 수 있다

 

 

 

 

Django ORM에서 정참조와 역참조에 대해서 설명하시오

 

정참조는 해당 객체가 다른 객체의 ForeignKey를 가지고 있거나 1대1 관계로 있는 상황에서 참조를 하는 경우

 

역참조는 해당 객체를 참조하고 있는 다른 객체를 참조하려고 하는 경우
다른 객체가 ForeignKey를 가지고 있거나 다대다 관계일때 참조하는 경우를 말한다

 

 

Feed-Comment 정참조

feed = Feed.objects.get(id=feed_id)
feed.comment.author #feed의 comment의 작성자를 참조해옴


Comment-Feed 역참조

comment = Comment.objects.get(user_id=user_id).last()
comment.feed_set.author #comment의 feed의 작성자를 참조해옴

 

_set을 붙이거나 related name으로 참조할 이름을 정해줄 수 있다.

이때 related_name은 해당 객체를 참조하고있는 다른 객체의 이름을 작성하도록 한다.