Django CheckboxSelectMultiple() widget - Valor seleccionado no es desplegado despues de grabar datos

Pregunta de la clase:
Bernardo Augusto García Loaiza

Bernardo Augusto García Loaiza

Pregunta
studenthace 8 años

Tengo 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

4 respuestas
para escribir tu comentario
    alejandro ramos

    alejandro ramos

    studenthace 8 años

    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.

    Ricardo Azpeitia P.

    studenthace 8 años

    ¿Cuando inicializas el form le estas haciendo el bind a tu instancia?

    Team Platzihace 8 años

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

Curso de Python y Django 2016

Curso de Python y Django 2016

Aprende Python desde cero y crea tu primera aplicación web completa en Django. Entiende las bases del lenguaje, sus funciones, conoce cómo conectarte a bases de datos y termina creando una API REST de manera profesional para tu app.

Curso de Python y Django 2016
Curso de Python y Django 2016

Curso de Python y Django 2016

Aprende Python desde cero y crea tu primera aplicación web completa en Django. Entiende las bases del lenguaje, sus funciones, conoce cómo conectarte a bases de datos y termina creando una API REST de manera profesional para tu app.