voglio sbarazzarsi del "-------------" scelta Django aggiunge in una selezione ingresso che rappresenta una chiave esterna su un ModelFormModelChoiceField, rimuovendo la scelta vuoto
E ' been answered che è possibile utilizzare l'opzione empty_label=none
, ma ho un ModelForm, non un modulo regolare e non è consentito sovrascrivere il campo.
So che posso ignorare il metodo della ModelForm __init__()
al fine di modificare set di query di un ModelChoiceField utilizzando
self.fields['my_foreign_key'].queryset = ....
Ma questo sarebbe davvero brutto, come questo accade oltre 10 FOREIGN_KEYS sul "Main" il modello, e non v'è più di un ModelForm basa su questo modello
l'intero contesto:
- ognuno di questi punti foreign_key allo stesso tipo di modelli: sono elenchi di scelte particolari, molti modelli per facilitare la loro modifica tramite l'amministratore.
- tutti questi modelli sono correlati al modello Main tramite una relazione "to_field = code", basata su un Charfield che contiene un codice di tre lettere (hey, non è colpa mia, ho dovuto usare un legacy MS Access DB), questo CharField ha le opzioni
blank=True, unique=True
, così ho potuto, per ciascuna lista, creare un record"---No information yet---"
che ha, si scommette, un valore vuoto al posto di un codice di tre lettere ...
La situazione è ora: i get un campo di input selezionato con due scelte "valore vuoto": il django e il mio, uno dopo l'altro. ho solo perdere una '= opzione none` empty_label anche qui ...
penso che si può ridefinire/sovrascrivere il campo. Lo faccio per modificare un campo del modello DateTime in un campo Campo di calcolo (e aggiungere un campo aggiuntivo di DateField). Quindi sovrascrivo il metodo clean() del modulo per combinare i campi data e ora. –