如何检查ChoiceField中的项目是否被选中?

时间:2012-08-03 05:41:53

标签: django

在表单中,我想使用一个列表,其中包含ChoiceField中尚未选择 not 的所有项目。为了做到这一点,我想迭代选择并丢弃所选的(即在他们的html中选择=“选中”)

class MethodForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MethodForm, self).__init__(*args, **kwargs)
        #pseudo-code starts here
        exclude = []
        for val in self.fields['someM2Mfield'].choices:
            exclude.append(val.is_selected)
        #/pseudocode
        rule_choices = get_rule_choices(exclude)
        self.fields['rule'] = forms.ChoiceField(rule_choices)
        ...

伪代码位是我不知道使用什么方法/属性的地方。谁能开导我?

PS:我可以通过在next()上调用self.fields[].choices.__iter__来迭代选择,但如何确定是否选择了该选项?

1 个答案:

答案 0 :(得分:1)

表单self.inital应该为您提供一个字典,其中包含表单所有字段的初始值。因此self.initial['someM2Mfield']应返回已选择的。如果您需要所选选项的列表,您可能会执行以下操作:

selected_values = self.initial['someM2Mfield']
rule_choices = [(value, text) for value, text in 
                self.fields['someM2Mfield'].choices
                if value in selected_values]