Django で複数の選択肢のフィールドを作成する

Salman Mehmood 2023年10月10日
Django で複数の選択肢のフィールドを作成する

この記事では、複数選択用のフィールドを作成する方法と、ユーザーが Django で複数のオプションを選択できるようにする方法を紹介します。

Django で複数の選択肢のフィールドを作成する

ユーザーがお気に入りの本を追加する demosite Web サイトがあるとします。 Django には、選択を行うときにドロップダウン メニューが表示され、ユーザーが 1つの項目のみを選択できるように制限するデフォルトの方法があります。

1 冊の本を選択するための複数のオプションを見たいとします。 複数の本のオプションがあります。 これを行う方法を見てみましょう。

まず最初に、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 になります。 title フィールドは CharField になります。

この title フィールドでは、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 アプリを追加する必要があります。 このプロジェクトでは、demo アプリを使用しています。

コード:

INSTALLED_APPS = [
    "demo",
]

manage.py ファイル ディレクトリが存在するターミナルを開き、次のコマンドを実行して移行を行います。

コマンド:

python manage.py makemigrations demo
python manage.py migrate

ここで、サーバーを実行する前にスーパーユーザーを作成する必要があります。

指図:

python manage.py createsuperuser

このコマンドを実行した後、ユーザー名、電子メール、およびパスワードの要件を満たす必要があります。 次に、次のコマンドを使用してサーバーを実行します。

指図:

python manage.py runserver

プロジェクトを実行したら、管理ページを開き、ページにログインして管理パネルにアクセスする必要があります。

出力:

Django の複数の選択肢 - 出力 1

ここでは、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
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