Формы Django: возможно ли иметь несколько выпадающих меню для разных тегов в поле? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть форма в наборе форм, где я хотел бы отобразить несколько раскрывающихся меню в одном поле «тесты». Я достиг этого в форме единого выпадающего меню в тегах «optgroup» (см. Изображение ниже).

Полагаю, таким образом вы можете выбрать только одно значение.

Однако возможно ли «вложить» эти выпадающие списки? Т.е. у них есть все под одним полем «тесты», но можно иметь несколько выпадающих списков с «тегами» и выбирать результаты для каждого тега? Или мне нужно поле для каждого тега?

Мои формы.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 голосов
/ 05 июля 2018

Вы, вероятно, хотите реализовать что-то на стороне шаблона / клиента, например, Chosen или Selectize.js (см. Примеры групп параметров).

Затем в вашем классе формы реализуйте метод clean и / или clean_[field_name], если вам нужно получить выбранные вами данные в нужном формате.

...