어제부터 본격적으로 프로젝트 작업에 들어 간 것 같다.
어제 오늘 낮까지 어느정도 프론트디자인을 끝내놓고 백엔드 작업으로 들어왔다.
우선 기본적으로 프로젝트는 자동으로 CI/CD 가 되게끔 기본 뼈대를 구성하였다.
오늘 있었던 이슈중 하나는 merge 과정에서 migration 데이터가 겹친 것 같다.
그래서 admin 페이지에서 데이터를 입력하려면
SQL 오류 (1452): Cannot add or update a child row: a foreign key constraint fails
이라는 오류가 난다
-자식 테이블에 데이터가 존재 할 경우, FK 설정을 할 수 없다. 이유는 자식테이블 기 입력 데이터가 날아 가기 때문.
migations 과정에서 뭔가 충돌이 난 것 같다.
해결법을 찾아 보았다.
옵션에 SET foreign_key_checks = 0;
을 추가해주면 에러는 해결 할 수 가 있지만,
근복적인 해결 방법은 아니다, 그후에 더 많은 이슈를 뱉을 것 같기 때문,
오랫동안 구글링을 해본결과 아직 데이터가 별로 없으니 db를 초기화 하기로 했다.
그래서 migrations 를 지우고, mysql 테이블도 싹 지우려고 했다
이 과정에서 또다시 1051인가 에러가 나는데, 이경우는 포링키로 연결한 자식테이블에 데이터가 존재해서 나는 에러이다.
자식 테이블부터 하나둘씩 삭제해주고, 다시 migrate 를 해주면 해결이 된다.
오늘 디버깅 하는 과정에서 시간을 많이 소비해서, 로직을 많이 짜지는 못했다.
우선, 메인페이지에 카테고리6개별로, post를 3개씩 보내줘야하는데 짜는데 좀 머리가 아팠다
요즘 공부하는 알고리즘 이 조금은 도움이 된 것 같다.
def get(self, request):
category_list =[]
for cate_get in range(1,7):
letter_gets = LetterModel.objects.filter(category=cate_get)[:3]
for letter_get in letter_gets:
cate = {
"category": letter_get.category,
"title": letter_get.title,
"content": letter_get.content
}
category_list.append(cate)
아직 model 에 create_date 를 설정안해놔서, 추후에 추가해서 .order_by('create_date')[:3]으로 설정하면 최신순으로 데이터를 가져올 수 있을 것 같다.
좀더 좋은 코드가 있는지 작업을 하면서 연구해 봐야겠다. 아직은 썩 맘에 들지는 않는다.