Django: ограничение количества выборок в пользовательском интерфейсе с использованием виджета FilteredSelectMultiple - PullRequest
0 голосов
/ 18 октября 2019

Я использую виджет FilteredSelectMultiple от Django Admin. Моя форма в настоящее время выглядит примерно так (у меня есть некоторые названия для SO, но она работает):

class SelectExampleForm(forms.Form):
    class Media:
        css = {'all': ('/static/widgets.css',), }
        js = ('/static/jsi18n.js',)

    def __init__(self, *args, **kwargs):
        group_name = kwargs.pop('group_name')
        location = kwargs.pop('location')

        r = super(SelectExampleForm, self).__init__(
            *args, **kwargs)

        # total pool of choices 
        qs = Employee.objects.filter(
            group__name=group_name, town=location
        )

        # Currently selected choices 
        current = Employee.objects.filter(
            group__name=group_name, town=location, attendance__isnull=False
        )

        # populating the widget ... 
        self.fields['personnel'] = \
            forms.ModelMultipleChoiceField(
                queryset=qs,
                widget=FilteredSelectMultiple(
                    'Employee', is_stacked=False),
                label='',
                initial=current,
                show_hidden_initial=True

            )

        return r

Хотя детали моделей не важны, они могут помочь дать некоторый контекст:

  • У меня есть текущий набор вариантов.
  • Существует пул потенциальных вариантов, из которых пользователь может выбирать.
  • Допускается квота общего выбора. Это число меньше количества возможных вариантов выбора.

Я бы хотел ограничить количество вариантов выбора, которые можно выбрать в пользовательском интерфейсе, чтобы можно было выбрать только определенное количество вариантов выбора n. и отображаются справа от виджета.

В настоящее время я проверяю это при отправке формы, что я буду продолжать делать, но несколько неуклюже позволить пользователю выбирать слишком много вариантов впервое место.

...