6편 : https://heokknkn.tistory.com/15
이번편에서는 Admin쪽을 좀 더 공부해보겠습니다 !
오늘은 그 중에서 외래키에 대해서 알아보겠습니다 !
먼저 !!! A라는 테이블에서 B의 정보를 좀 가져와보겠습니다 !
저는 Community쪽에서 새롭게 등록을 해보겠습니다 !
위에서 Add COMMUNITY를 누르면 아래와 같이 !
위에는 일단 간단하게 등록한건데요 ! 어떻게 저렇게 설정했는지 한번 확인해볼까요?
models.py를 살펴보겠습니다 !
name = models.CharField("이름(name)", max_length=140)
people = models.IntegerField("인원(people)")
owner = models.ForeignKey(
"users.User", related_name="communities", on_delete=models.CASCADE
)
위에처럼 CharField에서 처음에 Admin에서 보여질 이름도 지정 할 수 있습니다 !!!!
또한 owner를 ForeignKey를 줍니다 !
외래키(Foreign Key)란??
외래키(Foreign Key)란 테이블의 필드 중에서 다른 테이블의 행과 식별을 할 수 있는 키를 의미합니다.
일반적으로 외래키가 포함된 테이블을 자식테이블 이라고 하고 , 외래키 값을 갖고 있는 테이블은 부모테이블 이라고 합니다.
즉 !! 외래키란 테이블과 테이블을 연결하기 위해서 사용되는 키라고 생각하면 됩니다 !!!
따라서 ! 위에서는 Users테이블이 부모 테이블, Communities가 자식 테이블!
나중에 등록 할 때 DB에서 직접 확인해보도록 하겠습니다 !
외래키는 정말 많이 사용되니까 확실히 숙지하고 가시는게 좋습니다 !!!
아 ! 혹시라도 models에서 기본 클래스안에서 변수명이라던가 정보가 바뀌면
py manage.py makemigrations
py manage.py migrate
이 위에 2개를 잊지말아주시구요 ^^
그럼 Admin에서도 확인 할 수 있게 정의를 해줘야겠죠??
# 진짜 어드민 패널에 뿌려주는것 ! fieldsets
fieldsets = (
(
"Basic Info",
{
"fields": (
"name",
"people",
)
},
),
("Last Details", {"fields": ("owner",)}),
)
위에 처럼 해주세요 !!!
fieldsets은 admin에서 페이지의 레이아웃을 제어하도록 설정 해줍니다 !!! 자유롭게 커스텀도 가능하죠 ㅎㅎ
자 그러면 화면을 확인해봐야겠죠?
성공 !!!!
자 ! 먼저 외래키의 기능때문에 DB에 들어가는 값부터 보려고 간단하게 등록을 1개 하겠습니다 !!!
Owner에서는 user에서 등록한 user목록이 그대로 나옵니다 !!
아래와 같이 가볍게 등록해줍니다 !
그리고 DB에서 확인해보면 !!! kkana의 id는 2입니다 !!
그러면 community를 확인해봐야겠죠?
그러면 community를 봐볼까요?
owner_id란에 kkana의 id가 적혀있습니다 !
즉 ! 외래키(foreign key)를 이용해서 손쉽게 테이블과 테이블의 연결점을 만들 수 있습니다 !
자 오늘은 외래키에 대해서 알아봤습니다 !!
외래키는 정말 중요합니다 !!! 예를 들어 카톡에서 누군가와의 대화방을 만들었는데 그 대화방에 유저명을 알아내야겠죠?? 이럴 때 대화방에 유저의 대한 외래키가 있기 때문에 그 대화방에 맞는 유저를 가지고 올 수 있는겁니다 !!!
대신 ! 잘 못 만지면 엄청난 대참사가 !! ( 경험상 특별히 db를 만지지 않는 이상은 알맞은 값만 들어갑니다 )
꼭 숙지해서 갑시다 !
위에는 등록하고나서의 모습입니다 ..... 너무 못생겼죠???
다음시간에는 admin을 좀 더 활용해서 등록한 것들에 대해서 좀 더 이쁘게 나올 수 있게 해보겠습니다 !!!
왜냐하면 너무 못생겼어요 ㅜㅜ 좀 더 커스텀도 좀 하고 꾸며보겠습니다 !
'IT관련 > Python' 카테고리의 다른 글
[django] list_filter를 이용해서 우리만의 필터링을 만들어보자 ! (feat. SimpleListFilter) (2) | 2022.11.21 |
---|---|
[python] Django의 ForeignKey Field에 대해서 ! (feat. on_delete의 종류 및 역할) (0) | 2022.03.08 |
python의 django를 이용해서 웹을 만들어보자 - 8편 Admin(관리자)편! models & admin view 심화! (0) | 2022.03.08 |
python의 django를 이용해서 웹을 만들어보자 - 6편 공통으로 쓰는부분(core)를 다뤄보자! (0) | 2022.03.03 |
python에서 mysql을 연동해보자 ! (0) | 2022.02.25 |