Today I Learned | 7월 20일
오늘 뭐했지 🎀
1
Code Kata day2
2
Django C.R.U.D (2) 복습, 추가과제
3
git 명령어
🦠 Code Kata day2
Code Kata day 2 링크
🦠 Django C.R.U.D (2) 복습
Django C.R.U.D (2) 링크
1
Code Kata day2
2
Django C.R.U.D (2) 복습, 추가과제
3
git 명령어
Code Kata day 2 링크
Django C.R.U.D (2) 링크
필수과제 해결 후 복습할 겸 가벼운 마음으로 추가과제 도전 !
과제
- 위 테이블 구성을 토대로
models.py
를 작성해주세요. - 등록된 배우 목록을 리턴해주는 GET 메소드를 구현해주세요.
- 배우의 이름, 성, 그리고 출연한 영화 제목 목록
- 등록된 영화 목록을 리턴해주는 GET 메소드를 구현해주세요.
- 영화의 제목, 상영시간, 출연한 배우 목록 (이름만)
수행내용
Django C.R.U.D (2) Assignment 링크
1. 배운 내용을 토대로 models.py
작성 후 migrate
class Actor(models.Model) :
first_name = models.CharField(max_length=45)
last_name = models.CharField(max_length=45)
date_of_birth = models.DateField()
movie = models.ManyToManyField('Movie', related_name='actor')
class Movie(models.Model) :
title = models.CharField(max_length=45)
release_date = models.DateField()
running_time = models.IntegerField()
보통 테이블간의 상하관계를 따져 Actor <- Movie 방향으로 참조하는 것 같아서 반대 방향으로 ( Movie <- Actor ) 참조해봤다. (엄청 헷갈림 ㅎㅎ)
새로 등장한 내용
DateField()
,ManyToManyField()
역참조 데이터 호출 ( Movie -> Actor )
- movie.actor_set.al()
related_name
설정
2. views.py
작성
class ActorView(View) :
def get(self, request) :
actors = Actor.objects.all()
results = []
for actor in actors :
movies = actor.movie.all() <------
movie_list = [movie.title for movie in movies]
results.append(
{'first_name' : actor.first_name,
'last_name' : actor.last_name,
'movie' : movie_list
}
)
return JsonResponse({'results' : results}, status = 200)
class MovieView(View) :
def get(self, request) :
movies = Movie.objects.all()
results = []
for movie in movies :
actors = movie.actor.all() <------
actor_list = [actor.first_name for actor in actors]
results.append(
{'title' : movie.title,
'running_time' : movie.running_time,
'actors' : actor_list
}
)
return JsonResponse({'results' : results}, status = 200)
놀랍도록 필수과제와 비슷한 코드 등장.
조금 다른 점은 상호관계의 테이블 간 연결된 데이터를 처리하는 방법이다.
RelatedManager
ForeignKey
혹은ManyToManyField
필드를 갖는 테이블에서 사용한다.
3. urlconf
수정
#movies.urls.py
urlpatterns = [
path('/actors', ActorView.as_view()),
path('', MovieView.as_view()),
]
#project.directory.urls.py
urlpatterns = [
path('', include('movies.urls'))
]
🦠 git 명령어
git clean
git이 추적하지 않는 'unstage' 상태의 파일을 제거함.
사소한 수정사항이 있어서 계속 branch를 넘나들다보니 stage 상태의 파일이 섞이는 일이 발생.
git이 자꾸 나를 checkout 시켜주지않아서 추적하지 않는 파일을 삭제. .하자 branch를 넘나들때마다 파일이 생겼다 사라졌다를 반복하는 현상이 발생했다 .. 그때서야 비로소 내가 무슨 일을 저질렀는지 감이 팍 ~ 왔다 ^^ 모든 브랜치를 main 과 합쳐서 해결했다.
git은 HEAD branch가 추적하지 않는 파일을 유지함으로서 파일이 없었다 있었다 하는 현상을 막아주고 있었다.. 다시는 이런 일이 발생하지않도록 작업할 때마다 해당 branch를 유지할 것 .
Author And Source
이 문제에 관하여(Today I Learned | 7월 20일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@e2joo418/Today-I-Learned-7월-20일저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)