인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

codebot053님의 프로필 이미지
codebot053

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

장고 admin을 통한 데이터 관리

admin page 에서 label 관련 질문입니다.

작성

·

196

0

강의 내용을 따라가며 short_description 을 사용하여 Post model 에서 정의된 글 작성자의 id 를 admin 에서 볼수 있도록 설정해보았습니다.

author_id 라는 method 를 모델에서 정의하였으며 추가로 label 을 따로 설정하였고 이를 admin.py 에서 list_display 리스트에 추가하여 주었습니다. 

하지만 admin 페이지에서 확인해본 결과 Post model 에서 따로설정한 label 이 아니라 author_id 라는 default 값이 출력되며 처음 method 선언시 설정한 return 값인 self.author.id 의 값을 주석처리하고 다른 값을 넣었음에도 변경되지 않는 상황이 발생했습니다. 혹시 제가 인지하지 못하고 놓치고 있는 부분이 있는지 궁금합니다.!!

답변 4

1

codebot053님의 프로필 이미지
codebot053
질문자

앗 그렇군요ㅠㅠ 헷갈리는 계념과 모델 생성시에 고려할 것들을 더 알아봐야곘습니다..! 감사합니다!!

1

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

Post 모델에서 author = models.FK 필드를 선언하셨습니다. 이는 DB에는 author_id 이름의 컬럼이 생성이 됩니다. DB를 직접 열어보시면 확인하실 수 있구요.

그래서 author_id 이름의 필드가 이미 있기에, Post 모델에 author_id 이름의 메서드를 정의하셔도 admin에서는 author_id 필드를 참조하고 있는 상황인 듯 합니다.

기존에 author_id 필드가 있으니, 이름이 겹치지 않게 author_id가 아닌 다른 이름으로 메서드를 정의하시면 해결이 되실 듯 하네요.

해결되셨다면 본 질문의 상태를 해결됨으로 변경 부탁드립니다.

화이팅입니다. :-)

0

이진석님의 프로필 이미지
이진석
지식공유자

해결되셨다면 본 질문의 상태를 해결됨으로 변경 부탁드립니다. :-)

0

codebot053님의 프로필 이미지
codebot053
질문자

모델에서 FK 로 참조할경우 모델의 필드명이 db column에 그대로 들어가는것이 아니라 "필드명_id" 의 형태로 column에 저장되는것이였군요ㅠㅠ 

빠르고 명쾌한 답변 감사합니다!! 🫡

이진석님의 프로필 이미지
이진석
지식공유자

author_id 필드는 DB 입장에서의 외래키값이고, author 필드는 외래키 값을 활용한 모델 인스턴스가 되는 거죠.

그리고 author_id 필드명은 디폴트명이고 db_column 인자로 이름을 변경하실 수도 있습니다. 모든 모델 필드가 가능하구요. 하지만 이는 DB 스키마 변경을 유발하기에, db_column 인자 지정이 필요하시다면 모델 생성 초기에 지정해주시는 것이 좋습니다.

화이팅입니다. :-)

codebot053님의 프로필 이미지
codebot053

작성한 질문수

질문하기