I want to get rid of the "-------------" choice Django adds in a select input representing a Foreign Key on a ModelForm
It's been answered that you can use the empty_label=none
option, but I have a ModelForm, not a regular form and overriding the field is not allowed.
I know that I can override the __init__()
method of the ModelForm in order to modify a ModelChoiceField's queryset using
self.fields['my_foreign_key'].queryset = ....
But this would be really ugly, as this happens over +10 foreign_keys on the "Main" model, and there's more than a Modelform based on this model
The whole context :
- each one of these foreign_key points to the same kind of models : they are particular lists of choices, many models to ease their modification via the admin.
- all these models are related to the Main model via a "to_field=code" relation, based on a Charfield which contains a three-letter code (hey, not my fault, I had to use a legacy MS Access DB), this CharField has the
blank=True, unique=True
options, so I could, for each list, create a"---No information yet---"
record which has, you bet, a blank value instead of a three letter code...
The situation is now : I get a select input field with two "blank value" choices : the django one and mine, one after the other. I just miss a 'empty_label=none` option here too...