Django形式:一个字段中可能有多个下拉菜单,用于不同标签?

时间:2018-07-05 16:42:11

标签: django forms formset

我有一个表单集中的表单,我想在一个字段“测试”下显示多个下拉菜单。我已经通过在“ optgroup”标签中拥有一个下拉菜单的形式实现了这一点(请参见下图)。

我猜这样,您只能选择一个值。

但是,是否有可能“嵌套”这些下拉菜单?也就是说,它们都在一个字段“测试”下,但能够通过“标签”包含多个下拉列表并为每个标签选择结果?还是每个“标签”都需要一个字段?

我的forms.py:

class ReportForm(forms.ModelForm):

    summary = forms.CharField(
                widget=forms.Textarea(attrs={'rows':3, 'cols':70}),
                label='',
                required=False)

    tests = forms.CharField(widget=forms.HiddenInput())


    class Meta:
        model = ClinicallyReportedSample
        fields = ('id', 'summary', 'tests', 'hilis_reported')

    def __init__(self, *args, **kwargs):
        json_data = kwargs.pop('json_data', None)
        super(ReportForm, self).__init__(*args, **kwargs)

        crs_obj = self.instance

        for j in json_data:
            if j['lab_no'] == str(crs_obj):
                json = j

        summary = json['summary']
        self.fields['summary'].initial = summary
        self.fields['reported'].label = crs_obj

        tests = json.get('tests', None)
        if tests:

            test_choices = (
                    ('mutated', 'mutated'),
                    ('mutated - see comments', 'mutated - see comments'),
                    ('awaiting confirmation', 'awaiting confirmation'),
                )

            self.fields['tests'] = forms.ChoiceField(
                            required=True,
                            label='Current or repeat samples?',
                            choices=((k, test_choices) for k in tests),
                        )

enter image description here

我现在得到的是:

相反,我希望每个基因都有一个下拉列表以及这些选择。我需要为每个基因建立一个领域吗?我这样做的问题是每个结果都可以有0-10个基因,而在HTML表格中呈现这将非常困难。

谢谢

1 个答案:

答案 0 :(得分:0)

您可能想要实现某种模板/客户端来处理,例如ChosenSelectize.js(请参阅选项组示例)。

然后,如果需要以所需格式获取所选数据,则在表单类上实现clean和/或clean_[field_name]方法。