[TIL] # 24 Django mysql
데이터 추가, 삭제
Django shell과 mysql을 이용해서 추가, 삭제, 변경들 여러가지 해보고 복습도 할겸 써볼게요
일단은 미리 연습해볼겸 넣어놨던 데이터들이 있는데
mysql, orm 을 이용한 추가, 삭제
메뉴추가
가장 상위 카테고리인 메뉴 추가 한번 보겠습니다
delete from drinks_menu where id=1;
명령어를 이용해서 삭제한 후에 다시 생성 해볼건데,
Django shell
Menu.objects.create(name = "음료")
입력후 모습을 보게 되면 1이 아닌 3으로 다시 추가가 된걸 확인 할 수 있습니다
만약 초기화를 하고싶다 하시면
TRUNCATE table_name
입력해서 삭제후에 다시 만들어주면 됩니다
같은 방식으로 총 4개의 메뉴를 추가 해줬습니다
카테고리 추가
메뉴와 ForeignKey로 연결이 되어 있는 category의 경우는
추가 할때 생각해야 할게 한가지 있습니다
메뉴와 연결이 되어있기 때문에 ( menu_id를 이용해 여러가지 카테고리 생성 )
우리가 생성하는 카테고리가 어느 메뉴에 속해 있는지 확인해야 합니다
메뉴가 음료 인 콜드브루 를 만들 것이기 때문에
우선 메뉴명을 가지고 오고 그 후에 메뉴가 어떤건지 정해 주면 됩니다
mysql 확인
category 테이블에 menu_id는 3이고, 이름이 콜드브루인 컬럼이 추가됬습니다
같은 방식으로 다 만들어 볼게요
각각 어디 메뉴에 포함을 시킬지 id를 통해 메뉴탭을 가지고 오고,
그 이후에 어떤 카테고리를 만들지 생각하면 됩니다
음료
카테고리를 만드는 방법과 같습니다
다른점은 음료의 경우는 category_id를 가지고 와서 만들어 주기 때문에
만들려는 음료의 카테고리 id를 알아야합니다
bulk_create
혹은 이렇게 bulk_create를 이용해서 한번에 만들어 줄수도 있습니다
Drink.objects.bulk_create([Drink(korean_name = "바닐라 크림 콜드브루", category = get_coldbrew), Drink(korean_name = "망고 패션 후르츠 블렌디드", category = get_blended), Drink(korean_name = "딸기 요거트 블렌디드", category = get_blended)])
명령어를 입력해서 만들어주게 되면
요런식으로 blank를 무시하고 값을 생성해 줍니다
나머지도 다 만들어 주겠습니다
각각의 카테고리당 2개씩의 음료와 빵을 넣어 주었고,
다음은 이제 manytomany관계인 알러지로 가보겠습니다
알러지
다대다 관계의 경우는 조금 다릅니다
중간테이블이 중요하기 때문에 알러지의 이름을 추가해 준뒤
알러지 이름에 맞는 커피를 추가 해주면 됩니다
# 대두 알러지를 가지고 옴
bean = Allergy.objects.get(id = 1)
# 콩 알러지에 Drink id가 1인 음료를 추가
bean.drink.add(Drink.objects.get(id = 1)
알러지와 드링크의 아이디를 가지고온 테이블이 만들어 집니다
쭉 만들어 보겠습니다
이렇게 모두 만들어 줬는데,,, allergy_id 를 기준으로 정렬이 되있네요
ORDER BY 정렬할 컬럼
명령어를 이용해서 정렬한 테이블 확인하고 넘어 갈게요
image
이미지는 일대다 했던 방식이랑 같습니다
save() 메서드 사용해서 만들기
장고매니저를 이용해 create() 메서드를 사용해도 되지만
클래스 자제적으로 save 메서드가 존재합니다
models.Model 의 definition 에 들어가게되면
혹은 장고 공식문서에서
확인 가능합니다
보통 save 메서드를 가지고와서 오버라이딩해서 사용을 많이 하는걸로 알고있습니다
save 메서드를 이용하여 만드는 법입니다
이렇게 만든 결과물을 확인해보면
mysql에서 확인해보면 추가된걸 확인 할 수 있습니다
장고의 모델 생성 방법, 삭제하는 방법을 알아봤습니다
감사합니다 😁
Author And Source
이 문제에 관하여([TIL] # 24 Django mysql), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ddalkigum/TIL-24-Django-mysql저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)