我想向管理员展示多个选项,这样他一次可以从这些选择中选择多个选项。我可以使用复选框字段来执行此操作。我已经尝试了这个但是它没有显示复选框,而是显示了下拉列表中的选项。
这是我的代码。
models.py
class segmentation_Rules(models.Model):
Segmentation_Rules_CHOICES = (
(1, 'At least one order'),
(2, 'Have reward points'),
)
Rules =models.CharField(max_length=100, blank=True,verbose_name="Select rules for customer segmentation",choices=Segmentation_Rules_CHOICES)
forms.py
class Segmentation_Form(ModelForm):
Rules = forms.MultipleChoiceField( widget=forms.CheckboxSelectMultiple)
admin.py
class MyAdmin(admin.ModelAdmin):
form = Segmentation_Form
所以请告诉我一些方法,以便管理员可以从选择中选择多个字段。
修改
如果我从模型中删除选项并将它们定义为表单,那么只有一个文本字段显示给管理员而没有选择。
Segmentation_Rules_CHOICES = (
(1, 'At least one order'),
(2, 'Have reward points'),
)
class Segmentation_Form(ModelForm):
Rules = forms.MultipleChoiceField(choices=Segmentation_Rules_CHOICES, widget=forms.CheckboxSelectMultiple())
class Meta:
model=segmentation_Rules
答案 0 :(得分:2)
您需要从 models.py 中的模型字段定义中删除choices
参数,并将choices
字段添加到Rules表单字段> forms.py 即可。像这样:
<强> models.py 强>
class segmentation_Rules(models.Model):
Segmentation_Rules_CHOICES = (
(1, 'At least one order'),
(2, 'Have reward points'),
)
Rules = models.CharField(max_length=100, blank=True, verbose_name="Select rules for customer segmentation")
<强> forms.py 强>
class Segmentation_Form(ModelForm):
Rules = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple(), choices=models.segmentation_Rules.Segmentation_Rules_CHOICES)
答案 1 :(得分:0)
()
?
class Segmentation_Form(forms.Form):
Rules = forms.MultipleChoiceField(choices= Segmentation_Rules_CHOICES, widget=forms.CheckboxSelectMultiple())
def clean_Rules(self):
if len(self.cleaned_data['Rules']) > 3:
raise forms.ValidationError('Select no more than 3.')
return self.cleaned_data['Rules']
我投入了验证方法。您可以对所选择的选项数量进行限制。
答案 2 :(得分:0)
我正在使用它并且工作正常
Rules = forms.MultipleChoiceField(choices=mychoices, widget=forms.CheckboxSelectMultiple)
我认为您()
CheckboxSelectMultiple