• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

pk필드에 대해서

23.06.30 12:40 작성 조회수 143

0

안녕하세요, 대전에서 아주 잘 듣고 있는 수강생입니다 ㅎ

 

템플릿에서 db에 뭔가 요청을 할 때

{% url '주소' id %}

 

이런식으로 요청하면 url에서

'주소'/<int:pk>로 넘어가서

 

view에서

def 주소(request, pk):

a = get_object_or_404(Product, pk=pk)

이런식으로 조회를 하잖아요?

 

근데 우리가 모델에서 pk라는 필드를 정의한 적이 없는데 get object or 404 함수는 어떻게 pk인자를 받아서 id인자를 알아서 찾아오나요?

 

혹시나해서 모델에서 기본적으로 id 필드말고 pk 필드가 있는 지 봤는데 그런 것 같진 않더군요.

 

primary key가 되는 필드를 알아서 매핑하는건가요? 아니면 제가 모르는 장고의 동작이 별도로 있나요?

답변 1

답변을 작성해보세요.

0

안녕하세요.

예상하신 대로 장고 모델에서 pk는 실제 필드가 아니며, 기본키 필드를 가리키는 alias 입니다.

기본키 필드는 변경되더라도, pk를 통해 항상 기존키를 참조할 수 있기에, CBV에서도 내부 구현에 pk= 로 조회토록 기본 구현되어있습니다.

화이팅입니다. ;-)

 

paichai17님의 프로필

paichai17

질문자

2023.06.30

아!! alias였군요 ㅠㅠ 장고가 참 편리하지면서도 코드상에 드러나지 않은 부분들이 많아서 알아야할 것도 많네요.