在管理界面和新形式中,有一个能够定义选择的出色帮手。您可以使用以下代码:
APPROVAL_CHOICES = (
('yes', 'Yes'),
('no', 'No'),
('cancelled', 'Cancelled'),
)
client_approved = models.CharField(choices=APPROVAL_CHOICES)
在表单中创建一个下拉框,并强制用户选择其中一个选项。
我只是想知道是否有办法定义一组选项,其中可以使用复选框选择多个? (也很高兴能说用户可以选择最大数量。)看起来这是一个可能实现的功能,它只是我似乎无法在文档中找到它。
答案 0 :(得分:82)
就表单库而言,您可以使用带有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。
答案 1 :(得分:0)
@JonnyBuchanan给出了正确答案。
但是如果你在许多模型的django管理员中需要这个,并且你(像我一样)懒得自定义ModelForm并且在ModelAdmin类中使用正确的方法,那么你可以使用这种方法:
http://www.abidibo.net/blog/2013/04/10/convert-select-multiple-widget-checkboxes-django-admin-form/