날씨에 따른 카테고리 저장하기

날씨에 따른 카테고리 저장하기

·

2 min read

날씨와 카테고리 매핑 저장

맑음 날씨에는 관광명소, 카페, 쇼핑 등의 카테고리를 매핑하고,

비 날씨에는 문화시설, 카페를 매핑하는 식으로 설정해준다.

날씨와 카테고리 매핑 데이터를 저장하기 위해서는 WeatherCategoryMapping 모델에 데이터를 넣어야 한다.

  1. 장고의 데이터 마이그레이션을 통해 초기 데이터 삽입 : migrations 파일에 초기 데이터를 추가하여 자동으로 데이터 삽입

  2. 장고 관리 명령어를 통해 초기 데이터 삽입 : manage.py 명령어를 사용하여 데이터 삽입

두가지 방법으로 초기 데이터를 넣을 수 있으며, 두번째 방법으로 진행


1. WeatherCategoryMapping 모델에 초기 데이터 삽입

models.py

날씨와 카테고리 간의 매핑 저장

class WeatherCategoryMapping(models.Model):
    weather = models.CharField(max_length=50)
    category = models.CharField(max_length=50)

2. 장고의 shell을 사용하여 데이터 삽입 수행

  1. 터미널에서 장고 프로젝트 디렉토리로 이동한 후 장고 쉘 실행
    python manage.py shell

  2. 초기 데이터 삽입

from maps.models import WeatherCategoryMapping

mappings = [
    {"weather": "맑음", "category": "관광명소"},
    {"weather": "맑음", "category": "쇼핑"},
    {"weather": "맑음", "category": "문화시설"},
    {"weather": "맑음", "category": "음식점"},
    {"weather": "맑음", "category": "카페"},

    {"weather": "흐림", "category": "문화시설"},
    {"weather": "흐림", "category": "음식점"},
    {"weather": "흐림", "category": "카페"},
    {"weather": "흐림", "category": "쇼핑"},

    {"weather": "비", "category": "카페"},
    {"weather": "비", "category": "문화시설"},
    {"weather": "비", "category": "음식점"},
    {"weather": "비", "category": "쇼핑"},
    {"weather": "비", "category": "관광명소"},

    {"weather": "눈", "category": "카페"},
    {"weather": "눈", "category": "문화시설"},
    {"weather": "눈", "category": "음식점"},
    {"weather": "눈", "category": "쇼핑"},
    {"weather": "눈", "category": "관광명소"},

    {"weather": "습함", "category": "카페"},
    {"weather": "습함", "category": "쇼핑"},
    {"weather": "습함", "category": "음식점"},
    {"weather": "습함", "category": "문화시설"},

    {"weather": "미세먼지 좋음", "category": "관광명소"},
    {"weather": "미세먼지 좋음", "category": "쇼핑"},
    {"weather": "미세먼지 좋음", "category": "문화시설"},
    {"weather": "미세먼지 좋음", "category": "음식점"},
    {"weather": "미세먼지 좋음", "category": "카페"},

    {"weather": "미세먼지 나쁨", "category": "카페"},
    {"weather": "미세먼지 나쁨", "category": "쇼핑"},
    {"weather": "미세먼지 나쁨", "category": "문화시설"},
    {"weather": "미세먼지 나쁨", "category": "음식점"},
]


for mapping in mappings:
    WeatherCategoryMapping.objects.create(**mapping)

3. 삽입이 완료된 후 데이터가 저장되었는지 확인하려면 쉘에서 아래의 코드 실행

from maps.models import WeatherCategoryMapping

for mapping in WeatherCategoryMapping.objects.all():
    print(mapping)

이제 모델에 저장된 데이터가 views.py의 검색 로직에서 사용되어 사용자가 선택한 날씨 조건에 따라 자동으로 관련된 카테고리가 필터링되도록 할 수 있다.