2010-10-14 16 views

Respuesta

6

Ver: http://docs.djangoproject.com/en/dev/topics/forms/modelforms/

Si el campo modelo ha establecido opciones, a continuación, el widget del campo de formulario habrá SET para seleccionar, con opciones venir de las opciones del campo de modelo. Las opciones normalmente incluirán la opción en blanco que se selecciona por defecto en . Si el campo es obligatorio, esto obliga al usuario a hacer una selección . La opción en blanco no se incluirá si el campo del modelo tiene en blanco = Falso y un valor explícitamente predeterminado (el valor predeterminado será inicialmente seleccionado en su lugar).

3

Si es un ModelForm, apenas se fija default=None en su modelo, así:

choose = models.CharField(max_length=3, choices=choose_dict, default=None) 
+1

esto no funciona – Tony

+0

-1: 'default' se usa en el nivel de la base de datos, no en el nivel del formulario. Esto solo significa que si el valor no se establece al crear el objeto modelo, el valor se establecerá en 'Ninguno'. Aviso peligroso – Patrick

+0

@Patrick no es cierto (al menos desde Django 1.4). Ver http://stackoverflow.com/a/11721969/898423 –

6

Desde el Django forms doc:

Por defecto el widget <select> utilizado por ModelChoiceField tendrá un una elección vacía en la parte superior de la lista. Usted puede cambiar el texto de esta etiqueta (que es "---------" por defecto) con el atributo empty_label, o puede desactivar la etiqueta vacía por completo mediante el establecimiento de empty_label=None:

field2 = forms.ModelChoiceField(queryset=..., empty_label=None)

Si necesita hacer esto en un ModelForm, yo tenía una respuesta here.

+0

Arrgghhh, la solución en el enlace parece demasiado complicada. Supongo que en este caso, mejor recurrir a la forma ordinaria. –

Cuestiones relacionadas