python - tutorial - django windows
En Django, ¿hay alguna manera de mostrar las opciones como casillas de verificación? (2)
En términos de la biblioteca de formularios, debe usar el campo MultipleChoiceField con un widget CheckboxSelectMultiple para hacer eso. Puede validar la cantidad de opciones que se hicieron al escribir un método de validación para el campo:
class MyForm(forms.Form):
my_field = forms.MultipleChoiceField(choices=SOME_CHOICES, widget=forms.CheckboxSelectMultiple())
def clean_my_field(self):
if len(self.cleaned_data[''my_field'']) > 3:
raise forms.ValidationError(''Select no more than 3.'')
return self.cleaned_data[''my_field'']
Para obtener esto en la aplicación de administración, deberá personalizar un ModelForm y anular el formulario utilizado en el ModelAdmin apropiado .
En la interfaz de administración y en las formas nuevas, está el brillante ayudante de poder definir elecciones. Puedes usar un código como este:
APPROVAL_CHOICES = (
(''yes'', ''Yes''),
(''no'', ''No''),
(''cancelled'', ''Cancelled''),
)
client_approved = models.CharField(choices=APPROVAL_CHOICES)
para crear un cuadro desplegable en su formulario y forzar al usuario a elegir una de esas opciones.
Me pregunto si existe una forma de definir un conjunto de opciones donde se puedan elegir múltiples usando casillas de verificación. (También sería bueno poder decir que el usuario puede seleccionar un número máximo de ellos.) Parece que es una característica que probablemente esté implementada, es solo que parece que no puedo encontrarla en la documentación.
@JonnyBuchanan dio la respuesta correcta.
Pero si necesitas esto en el administrador de django para muchos modelos, y eres (como yo) demasiado perezoso para personalizar un ModelForm y modificar los métodos correctos dentro de la clase ModelAdmin, puedes usar este enfoque:
http://www.abidibo.net/blog/2013/04/10/convert-select-multiple-widget-checkboxes-django-admin-form/