Как правильно сделать множественный выбор?

Здравствуйте!

Есть модель данных "Requirement"(Требование). Можете ли описать алгоритм действий или привести пример, как правильно реализовать множественный выбор? Есть модельное окно для добавления нового требования, куда хочу вывести список REQUIREMENTS_CHOICES с checkbox`ами рядом. Пользователь должен иметь возможность выбрать нужные ему требования прокликав нужные ему checkbox`ы.

models.py:
class Requirement(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
    symbol = models.CharField(_('Symbol'), max_length=250)
    name = models.CharField(_('Name'), max_length=250)


forms.py:
class RequirementAddForm(forms.ModelForm):
    symbol= forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=REQUIREMENTS_CHOICES,)

    class Meta:
        model = Requirement
        fields = ('symbol',)



REQUIREMENTS_CHOICES = (
    ('A', 'Название A'),
    ('B', 'Название B'),
    ('C', 'Название C'),
)


views.py:
def requirement_add(request, project_code):
    data = dict()
    if request.method == 'POST':
        form = RequirementAddForm(request.POST)
        if form.is_valid():
            symbols = form.cleaned_data.get('symbol') # Список отмеченных пользователем символов: Например ['A', 'C']
            for symbol in symbols:
                requirement = form.save(commit=False)
                requirement.symbol = symbol
                requirement.name = symbol.get_symbol_display() # КАК ЗАПИСАТЬ НАЗВАНИЕ?
                requirement.save()
            data['form_is_valid'] = True
            requirements = Requirement.objects.filter()
            context = {'requirement': requirement, 'requirements': requirements}
            data['html_requirement'] = render_to_string('project/requirement_list.html', context)
        else:
            data['form_is_valid'] = False
    else:
        form = GroupRequirementAddForm()
    context = {'form': form}
    data['html_requirement_form'] = render_to_string('project/requirement_add.html', context, request=request)
    return JsonResponse(data)
  • Вопрос задан
  • 750 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы