2008-09-29 135 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

相关问题