Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中,有没有一种方法可以将选项显示为复选框?_Python_Django - Fatal编程技术网

Python 在Django中,有没有一种方法可以将选项显示为复选框?

Python 在Django中,有没有一种方法可以将选项显示为复选框?,python,django,Python,Django,在管理界面和newforms中,有一个能够定义选项的出色助手。您可以使用如下代码: APPROVAL_CHOICES = ( ('yes', 'Yes'), ('no', 'No'), ('cancelled', 'Cancelled'), ) client_approved = models.CharField(choices=APPROVAL_CHOICES) 在表单中创建下拉框并强制用户选择其中一个选项 我只是想知道是否有一种方法可以定义一组选项,其中可以使用复

在管理界面和newforms中,有一个能够定义选项的出色助手。您可以使用如下代码:

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

client_approved = models.CharField(choices=APPROVAL_CHOICES)
在表单中创建下拉框并强制用户选择其中一个选项


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

就表单库而言,您可以使用带有小部件的字段来实现这一点。您可以通过为字段编写验证方法来验证所做选择的数量:

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,并且。

@JonnyBuchanan给出了正确的答案

但是,如果您在django admin中对许多模型都需要此功能,并且您(和我一样)懒得自定义ModelForm并在ModelAdmin类中使用正确的方法,那么您可以使用以下方法:


这对我很有效,谢谢!我发现,使用
choices
将强制用户至少选择一个复选框,即使
blank=True
。我有几个字段,希望用户可以选择不选择、一个或多个选项。在本例中,我只是使用字符串“None”作为选项之一。我知道这不是最好的方法,但我会坚持下去,直到找到更好的方法。