Crear campo para opciones múltiples en Django

Salman Mehmood 15 febrero 2024
Crear campo para opciones múltiples en Django

Este artículo presentará cómo crear un campo para múltiples opciones y le mostrará cómo permitir que los usuarios seleccionen múltiples opciones en Django.

Crear campo para opciones múltiples en Django

Suponga que tiene un sitio web demosite donde los usuarios agregan sus libros favoritos. Django tiene una forma predeterminada de que cuando haga elecciones, serán un menú desplegable y limitarán a un usuario a elegir solo un elemento.

Supongamos que queremos ver múltiples opciones para elegir un libro; tendremos más de una opción de libro. Veamos cómo haremos esto.

Entonces, antes que nada, prepararemos nuestra clase modelo Libro. Abra el archivo models.py y cree una tupla con diferentes nombres de libros.

Código:

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"),
    )

Ahora, necesitamos crear la primera columna o campo en la base de datos, que sería un título. El campo título sería un CharField.

En este campo título, pasaremos la tupla BOOK_CHOICES al argumento choices. El argumento opciones nos permitirá elegir una opción del menú desplegable.

Código:

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

Registre este modelo de Libro en el archivo admin.py. Primero, necesitamos importar nuestro modelo Libro y luego registrarlo usando admin.site.register().

Código:

from .models import Book

admin.site.register(Book)

Ahora, debemos abrir el archivo setting.py, encontrar la lista INSTALLED_APPS y agregar nuestra aplicación Django a esta lista antes de la migración. En este proyecto, estamos utilizando una aplicación de demostración.

Código:

INSTALLED_APPS = [
    "demo",
]

Abramos una terminal donde exista el directorio de archivos manage.py y ejecutemos los siguientes comandos para realizar migraciones.

Comandos:

python manage.py makemigrations demo
python manage.py migrate

Ahora, tenemos que crear un superusuario antes de ejecutar el servidor.

Dominio:

python manage.py createsuperuser

Después de ejecutar este comando, debemos cumplir con los requisitos de nombre de usuario, correo electrónico y contraseña. Entonces, estamos listos para ejecutar el servidor usando el siguiente comando.

Dominio:

python manage.py runserver

Después de ejecutar el proyecto, debemos abrir la página de administración e iniciar sesión en la página para acceder al panel de administración.

Producción:

Opciones múltiples de Django - Salida 1

Aquí puedes ver que solo podemos elegir una opción.

Si desea que su usuario elija más de una opción, debe seguir las instrucciones.

Necesitaremos un módulo django-multiselectfield para usar la función de opciones múltiples en nuestro proyecto. Es fácil de usar; sigue este enlace para poder usar esta función.

En este momento, nuestro archivo models.py contiene el siguiente código.

Código:

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)

Producción:

Opciones múltiples de Django - Salida 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

Artículo relacionado - Django Model