2010-10-14 16 views

risposta

6

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

Se il campo modello è impostato scelte, poi il widget del campo modulo sarà SET per selezionare, con le scelte provenienti dalle scelte del campo modello. I scelte di norma includere la scelta vuoto che viene selezionato dal impostazione predefinita. Se il campo è obbligatorio, questo obbliga l'utente ad effettuare una selezione . La scelta vuota non sarà incluso se il campo modello ha vuoto = False e un esplicito valore predefinito (il valore di default sarà inizialmente selezionato, invece).

3

Se è un ModelForm, è sufficiente impostare default=None nel modello, in questo modo:

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

non funziona – Tony

+0

-1: 'default' è utilizzato a livello di database, non a livello di modulo. Ciò significa solo che se il valore non è impostato durante la creazione dell'oggetto modello, il valore sarà impostato su "Nessuno". consiglio pericoloso – Patrick

+0

@Patrick non è vero (almeno dal Django 1.4). Vedere http://stackoverflow.com/a/11721969/898423 –

6

Dal Django forms doc:

Per impostazione predefinita il widget <select> usato da ModelChoiceField avrà un un scelta vuota in cima alla lista. È possibile modificare il testo di questa etichetta (che è "---------" per impostazione predefinita) con l'attributo empty_label, o è possibile disattivare l'etichetta vuota interamente impostando empty_label=None:

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

Se avete bisogno di fare questo su un ModelForm, ho avuto una risposta here.

+0

Arrgghhh, la soluzione nel collegamento sembra troppo complicata. Immagino che in questo caso, meglio ricorrere alla forma ordinaria. –

Problemi correlati