2014-11-17 135 views
7

我有以下代碼:Django的ModelMultipleChoiceField設置的初始值

category = forms.ModelMultipleChoiceField(
    label="Category", 
    queryset=Category.objects.order_by('name'), 
    widget=forms.Select(
     attrs={ 
      'placeholder': 'Product Category', 'class': 'form-control'}), 
    required=True 
) 

我怎麼在選擇框中設置初始值,如「選擇類別」,以便選擇框應該具有的類別與列表初始值爲「選擇一個類別」

回答

10

您可以從視圖中將「初始」設置傳遞給它。例如:

form = FormUsingCategory(initial={'category':querysetofinitialvalues}) 

棘手的部分是您必須擁有正確的查詢集。就像種子值一樣,它必須是Category.objects.filter(...) - 其他任何東西都不行。

+0

這是我能找到網上的實際工作的唯一的東西。 +1 – dspacejs

1

如果您傳遞一個QuerySet對象作爲初始值,並且如果widget=forms.CheckboxSelectMultiple,則複選框不會被選中。我不得不把QuerySet對象轉換到一個列表,然後將複選框被檢查:

YourForm(initial={'multi_field': 
    [cat for cat in Category.objects.all().values_list('id', flat=True)] 
    })