일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- socket io
- wetube
- 채팅
- crud
- docker
- async
- NeXT
- 중급파이썬
- SSA
- 카톡
- Vue
- Props
- 파이썬
- Class
- node
- MongoDB
- TypeScript
- pandas
- react
- dict
- AWS
- 튜플
- EC2
- SAA
- merge
- RDS
- S3
- lambda
- git
- flask
- Today
- Total
초보 개발자
raw_ids ,inline Admin, save() 본문
raw_ids fields는 foreign key를 좀 더 나은 방법으로 볼 수 있게 해준다.
Room Admin에 위와 같은 코드를 작성해주면
더이상 리스트로 보이지 않고 user admin로 검색할 수 있게 해준다. 만약 user가 엄청 많아진다면 전처럼 리스트에서 고르는건 힘들 것이다.
InlineModelAdmin
admin안에 또 다른 admin을 넣는 방법이다.
우리는 Photo모델을 만들고 그 모델 안에서 제목, 파일, 룸(foreign key)을 지정해주는 식으로 하였다.
따라서 방에 사진을 올리기 위해선 방에서 올리는 것이 아닌, 포토 모델에서 따로 올려주어야 하였다.
근데 이 분리된, 모델을 하나로 합칠 수 있는 방법이 바로 인라인모델어드민이다. admin.py에서
새로운 클래스 하나를 만들어 준다. 상속받는 곳을 잘 보자 그리고 그 안에 model을 정의하고 그 안에는 Photo모델을 가져왔다.
그 뒤 RoomAdmin에 inlines에 튜플형식으로 우리가 만든 클래스를 정의해주면
Room아래에 바로 아래와 같은 입력창이 생겼다. 여기서 파일을 생성하면 우리가 따로 forein key를 지정해주지 않아도 자동으로 해당 방의 foreign key를 가지고 있다. 그 이유는 우리의 변수 지정 방식때문이라고 한다.
photo의 내의 room변수와
Room모델의 이름 Room이 같아서 라고 했는데 이 부분은 잘 모르겠다. 아마 foreign key를 보고 이어준 것이 아닌가? 아무튼 이어졌따.. 대박신기...
이와 같이 User와 Room을 이어줘보았다.
user의 아래에 room이 생성된 것을 알 수 있다. 간단하게 서로 foreign key로 이어진 두 모델을 inlineadmin을 통해서 이어줄 수 있었다.
save() overiding
장고의 모든 모델들은 save() method를 가지고 있다.
이 안의 내용들은 이전 것이 아니라 새로 바뀌는 것이 온다.
models.Room에서 save()를 오버로딩하여 기존의 기능을 사용하고, self.city = self.city.title()이라고 설정하면
어드민, 콘솔등에서 save버튼을 누르면 무조건 city는 첫글자가 대문자로 설정이 된다.
아래와 같이 저장하고 save를 누르면
이와 같이 바뀌어 저장이 되어있다.
'Python > airbnb 클론' 카테고리의 다른 글
url, views (0) | 2022.02.05 |
---|---|
django-seed (0) | 2022.02.04 |
photo model (0) | 2022.01.26 |
queryset , manytomany (0) | 2022.01.25 |
Room admin, query_set 1 (0) | 2022.01.24 |