50

在管理界面和新表单中,有一个出色的助手可以定义选择。你可以使用这样的代码:

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

client_approved = models.CharField(choices=APPROVAL_CHOICES)

在表单中创建一个下拉框并强制用户选择其中一个选项。

我只是想知道是否有一种方法可以定义一组选择,其中可以使用复选框选择多个?(能够说用户可以选择其中的最大数量也很高兴。)这似乎是一个可能已实现的功能,只是我似乎无法在文档中找到它。

4

2 回答 2

88

就表单库而言,您可以使用带有CheckboxSelectMultiple小部件的MultipleChoiceField字段来执行此操作。您可以通过为该字段编写验证方法来验证所做的选择数量:

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 并覆盖在适当的 ModelAdmin 中使用的表单

于 2008-09-29T07:17:46.533 回答
0

@JonnyBuchanan 给出了正确答案。

但是,如果您在 django admin 中为许多模型需要这个,并且您(像我一样)懒得自定义 ModelForm 并覆盖 ModelAdmin 类中的正确方法,您可以使用这种方法:

http://www.abidibo.net/blog/2013/04/10/convert-select-multiple-widget-checkboxes-django-admin-form/

于 2015-11-24T15:29:37.373 回答