장고 - multiselectfield 학습

  • 이번 포스트에서는 앱 모델 작성 시, 한번에 여러 항목을 선택할 수 있는 multiselectfield 를 구현하는 방법에 대해 학습해볼 것이다.

ex) yanolja_project

1. multiselectfield 설치

  • 경로 : yanolja_project$
    1
    pip install django-multiselectfield

2. 모델 작성

  • 경로 : stay(앱) > models.py
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    from django.db import models
    from django.contrib.auth import get_user_model
    from multiselectfield import MultiSelectField

    SERVICE_CHOICES = (
    (1, '주차가능'),
    (2, '레스토랑'),
    (3, '부페'),
    (4, '커피숍'),
    (5, '유료세탁'),
    (6, '24시간데스크'),
    (7, '객실금연'),
    ...
    )

    class Stay(models.Model):
    service_kinds = MultiSelectField(choices=SERVICE_CHOICES, null=True, blank=True)

3. 설정 추가

  • 경로 : config(프로젝트) > settings.py
    1
    2
    3
    4
    INSTALLED_APPS = (
    ...
    'multiselectfield',
    )

4. 커스터마이징 템플릿

  • 경로 : stay > templates > stay > stay_list.html
    1
    2
    3
    4
    5
    6
    7
    {% block content %}
    {% for object in object_list %}
    ...
    {{object.service_kinds}}
    ...
    {% endfor %}
    {% endblock %}

5. REST Framework API 작성 시

  • 경로 : stay > serializers.py
    1
    2
    3
    4
    5
    6
    7
    from rest_framework import fields, serializers
    from .models import SERVICE_CHOICES

    class StaySerializer(serializers.ModelSerializer):
    ...
    service_kinds = fields.MultipleChoiceField(choices=SERVICE_CHOICES)
    ...