
Bernardo Augusto García Loaiza
PreguntaTengo el siguiente modelo:
<code> class AcademicPeople(models.Model): CATHEDRAL_PROFESSOR = 'CATHEDRAL' RESEARCH_PROFESSOR = 'RESEARCH' INSTITUTIONAL_DIRECTIVE = 'DIRECTIVE' OCCUPATION_CHOICES = ( (CATHEDRAL_PROFESSOR, 'Cathedral Professor'), (RESEARCH_PROFESSOR, 'Research Professor'), (INSTITUTIONAL_DIRECTIVE, 'Institutional Directive'), ) occupation = models.CharField( max_length=255, blank = False, )
En mi
forms.py
<code> from .models import from django.forms.widgets import CheckboxSelectMultiple class AcademicPeopleForm(forms.ModelForm): title = "Details" occupation = forms.MultipleChoiceField( required=False, label='Occupation', widget=CheckboxSelectMultiple(), choices=AcademicPeople.OCCUPATION_CHOICES ) class Meta: model = AcademicPeople fields = ('occupation',)
Cuando voy a mi template en mi navegador yo veo los checkboxes renderizados, selecciono algunas opciones y cuando almaceno datos, estas opciones se graban en la base de datos, pero no se detallan en el template de nuevo.
Cómo puedo trabajar con opciones de selección múltiple y estas opciones seleccionadas permanezcan cuando quiera verlas.
¿Alguna aplicación de terceros?
¿Uso de JavaScript?
Es posible que mi enfoque este algo incompleto o este pasando por alto algo?
Agradezco su colaboración

Juan Jose Aparicio Aparicio
Hola, luego de estar 2 dias con este mismo problema, termine usando https://pypi.org/project/django-multiselectfield/ super facil de instalar y resuelve todo con los checkbox muy muy facil.

alejandro ramos
Yo lo he intentado igual que tu, pero una vez llegas al pasao de crear los checkbox tienes que agregar javascript
para cambiar el tipo de etiqueta, CheckboxSelectMultiple
es de tipo checkbox, puede que te de un error de guardado una vez tengas el checkbox, el error es que te diga que lo tienes pero no te guarda, los valores. y no te diga nada mas ni en la terminal ni en la consola del browser.
Otra manera es cambiar el widget por otro es decir tienes que sobreescribir el widget, es un poco lio, ya que tienes que agregar código html en el render y agregarle lógica.
y la ultima y más fácil para no perder tiempo es agregar en el model un m2m, y ya lo tienes todo bien,
Despues con javascript y algunas queryes en el modelform puedes harce filtros a tu gusto y darle el diseño que te guste

Ricardo Azpeitia P.
¿Cuando inicializas el form le estas haciendo el bind a tu instancia?

Puedes compartir el views.py, el problema puede estar en ese archivo.