2008-09-29 130 views
42

在管理界面和新表單中,有能夠定義選擇的明智幫手。您可以使用這樣的代碼:在Django中有沒有辦法顯示選擇爲複選框?

APPROVAL_CHOICES = (
    ('yes', 'Yes'), 
    ('no', 'No'), 
    ('cancelled', 'Cancelled'), 
) 

client_approved = models.CharField(choices=APPROVAL_CHOICES) 

創建表單中的一個下拉框,並強制用戶選擇這些選項之一。

我只是想知道是否有一種方法來定義一組選擇,其中可以使用複選框來選擇多個選項? (也很高興能夠說用戶可以選擇它們的最大數量。)它似乎是一個可能實現的功能,只是我似乎無法在文檔中找到它。

回答

77

就表格庫而言,您可以使用MultipleChoiceField字段和CheckboxSelectMultiple小工具來完成此操作。您可以驗證這是通過編寫一個驗證方法領域取得的選項數:

class MyForm(forms.Form): 
    my_field = forms.MultipleChoiceField(choices=SOME_CHOICES, widget=forms.CheckboxSelectMultiple()) 

    def clean_my_field(self): 
     if len(self.cleaned_data['my_field']) > 3: 
      raise forms.ValidationError('Select no more than 3.') 
     return self.cleaned_data['my_field'] 

要在管理應用程序得到這個,你需要定製的ModelForm和override the form used in the appropriate ModelAdmin

相關問題