Django Model MultipleChoice

Sé que no hay MultipleChoiceField para un modelo , solo puede usarlo en Formularios.

Hoy me enfrento a un problema al analizar un nuevo proyecto relacionado con Opciones Múltiples.

Me gustaría tener un campo como un campo de campo con choices con la opción de opción múltiple.

Solucioné este problema otras veces creando un CharField y CharField las múltiples opciones en el formulario con un forms.MultipleChoiceField y forms.MultipleChoiceField las opciones separadas por comas.

En este proyecto, debido a la configuración, no puedo hacerlo como lo mencioné anteriormente, necesito hacerlo en los Modelos, y prefiero NO editar el formulario de administración de Django ni usar formularios. Necesito un campo modelo con opción de opciones múltiples

  • ¿Alguien ha resuelto algo como esto a través de Modelos?

Tal vez anulando algunas de las funciones de los modelos o usando un widget personalizado … No lo sé, estoy un poco perdido aquí.


Editar

Soy consciente de las elecciones simples , me gustaría tener algo como:

 class MODEL(models.Model): MY_CHOICES = ( ('a', 'Hola'), ('b', 'Hello'), ('c', 'Bonjour'), ('d', 'Boas'), ) ... ... my_field = models.CharField(max_length=1, choices=MY_CHOICES) ... 

pero con la capacidad de guardar múltiples opciones no solo 1 opción.

Debe pensar cómo va a almacenar los datos a nivel de base de datos. Esto dictará tu solución.

Es de suponer que desea una sola columna en una tabla que almacena varios valores. Esto también lo obligará a pensar cómo va a serializar, por ejemplo, no puede simplemente separar las comas si necesita almacenar cadenas que puedan contener comas.

Sin embargo, es mejor usar una solución como una de las siguientes:

En caso de que esté utilizando Postgres, considere usar ArrayField .

 from django.db import models from django.contrib.postgres.fields import ArrayField class WhateverModel(models.Model): WHATEVER_CHOICE = u'1' SAMPLE_CHOICES = ( (WHATEVER_CHOICE, u'one'), ) choices = ArrayField( models.CharField(choices=SAMPLE_CHOICES, max_length=2, blank=True, default=WHATEVER_CHOICE), ) 

De los dos, https://pypi.python.org/pypi/django-select-multiple-field/ se ve más completo y completo. Incluso tiene un buen conjunto de pruebas de unidad.

El problema que encontré es que lanza una advertencia de eliminación de Django 1.10 en la clase que implementa el campo del modelo.

Arreglé esto y envié un PR. El último código, hasta que combinen mis relaciones públicas (si alguna vez deciden jeje) está en mi bifurcación del repository, aquí: https://github.com/matiasherranz/django-select-multiple-field

¡Aclamaciones!

METRO.-

Si desea que el widget se vea como una entrada de texto y aún así pueda permitir seleccionar varias opciones de sugerencias, es posible que esté buscando Select2 . También hay django-select2 que lo integra con Django Forms y Admin.