I have the following code:
category = forms.ModelMultipleChoiceField(
label="Category",
queryset=Category.objects.order_by('name'),
widget=forms.Select(
attrs={
'placeholder': 'Product Category', 'class': 'form-control'}),
required=True
)
how do I set an initial value in the select box like "Choose a category" so that the select box should have a list of categories with the initial value being "Choose a category"
If you pass a
QuerySet
object as an initial value and ifwidget=forms.CheckboxSelectMultiple
, then the check boxes are not checked. I had to convert theQuerySet
object to a list, and then the check boxes were checked:Either set initial when you create form instance or set field initial in form init
If you just want to change the text when no field selected you can set empty_label property. https://docs.djangoproject.com/en/1.10/ref/forms/fields/#django.forms.ModelChoiceField.empty_label
You can pass it the "initial" setting from your view. For example:
The tricky part is that you must have the right queryset. Just like the seed values, it must be of Category.objects.filter(...) - anything else won't work.