Se il campo di un modello è una scelta o di chiave esterna, il widget sulla pagina è una selezione ingresso o radio se si specifica che. Django colloca "---------" nel primo elemento come valore non selezionato. Come posso ignorarlo o addirittura rimuoverlo? Ricordo di aver letto il modo di farlo ma non lo trovo più.Come per rimuovere la voce selezionata in un ingresso di selezione e radio in Django
risposta
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).
Se è un ModelForm, è sufficiente impostare default=None
nel modello, in questo modo:
choose = models.CharField(max_length=3, choices=choose_dict, default=None)
Dal Django forms doc:
Per impostazione predefinita il widget
<select>
usato daModelChoiceField
avrà un un scelta vuota in cima alla lista. È possibile modificare il testo di questa etichetta (che è "---------" per impostazione predefinita) con l'attributoempty_label
, o è possibile disattivare l'etichetta vuota interamente impostandoempty_label=None
:
field2 = forms.ModelChoiceField(queryset=..., empty_label=None)
Se avete bisogno di fare questo su un ModelForm
, ho avuto una risposta here.
Arrgghhh, la soluzione nel collegamento sembra troppo complicata. Immagino che in questo caso, meglio ricorrere alla forma ordinaria. –
non funziona – Tony
-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
@Patrick non è vero (almeno dal Django 1.4). Vedere http://stackoverflow.com/a/11721969/898423 –