Django에서 다중 선택을 위한 필드 만들기

Salman Mehmood 2023년10월10일
Django에서 다중 선택을 위한 필드 만들기

이 문서에서는 다중 선택을 위한 필드를 만드는 방법과 Django에서 사용자가 여러 옵션을 선택하도록 허용하는 방법을 보여줍니다.

Django에서 다중 선택을 위한 필드 만들기

사용자가 좋아하는 책을 추가하는 demosite 웹 사이트가 있다고 가정합니다. Django에는 선택을 할 때 드롭다운 메뉴가 되어 사용자가 하나의 항목만 선택하도록 제한하는 기본 방식이 있습니다.

한 권의 책을 선택하기 위한 여러 옵션을 보고 싶다고 가정합니다. 우리는 하나 이상의 책 옵션을 가질 것입니다. 우리가 이것을 어떻게 할 것인지 봅시다.

따라서 우선 Book 모델 클래스를 준비합니다. models.py 파일을 열고 책 이름이 다른 튜플을 만듭니다.

암호:

from django.db import models


class Book(models.Model):
    BOOK_CHOICES = (
        ("Parks of being a wallflower", "Parks of being a wallflower"),
        ("All the bright places", "All the bright places"),
        ("The girl on the train", "The girl on the train"),
        ("Django", "Django"),
    )

이제 데이터베이스에서 제목이 될 첫 번째 열 또는 필드를 만들어야 합니다. title 필드는 CharField입니다.

제목 필드에서 BOOK_CHOICES 튜플을 choices 인수에 전달합니다. choices 인수를 사용하면 드롭다운 메뉴에서 옵션을 선택할 수 있습니다.

암호:

title = models.CharField(max_length=100, choices=BOOK_CHOICES)

Book 모델을 admin.py 파일에 등록합니다. 따라서 먼저 Book 모델을 가져온 다음 admin.site.register()를 사용하여 등록해야 합니다.

암호:

from .models import Book

admin.site.register(Book)

이제 마이그레이션하기 전에 setting.py 파일을 열고 INSTALLED_APPS 목록을 찾은 다음 Django 앱을 이 목록에 추가해야 합니다. 이 프로젝트에서는 데모 앱을 사용하고 있습니다.

암호:

INSTALLED_APPS = [
    "demo",
]

manage.py 파일 디렉터리가 있는 터미널을 열고 다음 명령을 실행하여 마이그레이션을 수행해 봅시다.

명령:

python manage.py makemigrations demo
python manage.py migrate

이제 서버를 실행하기 전에 수퍼유저를 생성해야 합니다.

명령:

python manage.py createsuperuser

이 명령을 실행한 후 사용자 이름, 이메일 및 암호 요구 사항을 이행해야 합니다. 그런 다음 다음 명령을 사용하여 서버를 실행하는 것이 좋습니다.

명령:

python manage.py runserver

프로젝트를 실행한 후 관리자 페이지를 열고 페이지에 로그인해야 관리자 패널에 액세스할 수 있습니다.

출력:

Django 다중 선택 - 출력 1

여기에서 하나의 옵션만 선택할 수 있음을 알 수 있습니다.

사용자가 둘 이상의 옵션을 선택하도록 하려면 지침을 따라야 합니다.

프로젝트에서 다중 옵션 기능을 사용하려면 django-multiselectfield 모듈이 필요합니다. 사용하기 쉽습니다. 이 기능을 사용하려면 이 링크를 따르십시오.

현재 models.py 파일에는 다음 코드가 포함되어 있습니다.

암호:

from multiselectfield import MultiSelectField
from django.db import models


class Book(models.Model):
    BOOK_CHOICES = (
        ("Parks of being a wallflower", "Parks of being a wallflower"),
        ("All the bright places", "All the bright places"),
        ("The girl on the train", "The girl on the train"),
        ("Django", "Django"),
    )
    title = MultiSelectField(choices=BOOK_CHOICES)

출력:

Django 다중 선택 - 출력 2

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Django Model