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

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

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

Есть модель данных "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)
  • Вопрос задан
  • 759 просмотров
Подписаться 5 Оценить 5 комментариев
Помогут разобраться в теме Все курсы
  • ProductStar
    Django + Python разработка
    2 месяца
    Далее
  • Skillbox
    Python-фреймворк Django
    3 месяца
    Далее
  • Бруноям
    Python-фреймворк Django
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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