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
プロジェクトを実行したら、管理ページを開き、ページにログインして管理パネルにアクセスする必要があります。
出力:
ここでは、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)
出力:
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