Задать вопрос

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

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

Есть модель данных "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)
  • Вопрос задан
  • 752 просмотра
Подписаться 5 Оценить 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

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

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