Django poll - переход от только одного выбранного варианта (радио) к множественному выбору (чекбокс) и регистрация всех вместе

Я сделал приложение для опроса на django. Оно работает нормально, но я хочу изменить выбор и регистрацию опции голосования. Сейчас я могу выбрать и зарегистрировать один вариант ('participanti') (radio btn select), но я хочу иметь возможность позволить пользователю выбрать более одного варианта ('participanti') (1 или от 1 до максимум 3) в одном экземпляре и после отправки зарегистрировать все выбранные варианты/участники (1 или 2 или все максимум 3, которые выбрал пользователь). Я не знаю, как подступиться к такому механизму. Пожалуйста, помогите мне с решением. Большое спасибо. Ниже приведены настройки май

модели

class Campanie(models.Model):
.....

class Participanti(models.Model):
    campanievot = models.ForeignKey(Campanie, on_delete=models.CASCADE)
    nume_participant = models.CharField(max_length=200, verbose_name='nume')
    dep_participant = models.CharField(max_length=200, verbose_name='departament')
    votes = models.IntegerField(default=0)
    def __str__(self):
        return self.nume_participant

    class Meta:
        verbose_name = 'Participanti'
        verbose_name_plural = 'Participanti'

views.py

def votare_campanie(request):

    campanie = get_object_or_404(Campanie)
 
    try:
        participant_votat = campanie.participanti_set.get(pk=request.POST['participanti'])
       

    except (KeyError, Participanti.DoesNotExist):
      
        return render(request, 'campanievot/campanie.html', {
            'campanie' : campanie,
            'error_message' : "Trebuie sa votezi cel putin un coleg",
        })
    else:
        participant_votat.votes += 1
        participant_votat.save()
 
        messages.success(request, "Multumim pentru feedback!")
        return redirect('campanievot:index')

template.html

<form action=" {% url 'campanievot:votare_campanie'%} " method="post" >
                {% csrf_token %}

                {% for p in campanie.participanti_set.all %}

                {% if p.dep_participant == request.user.departament %}

                {% else %}

               <label for="p{{ forloop.counter }}" class="form-check custom-icon mt-2 mb-4" role="button">
                    <input type="radio" name="participanti" class="form-check-input" id="p{{ forloop.counter }}"
                        value="{{ p.id }}">
                    <span class="form-check-label">
                        <span class="content">
                            <span for="p{{ forloop.counter }}" class="heading mb-1 d-block lh-1-25">{{p.nume_participant }} {{ p.dep_participant }}</span>
                            <!-- <span class="d-block text-small text-muted">04.05.2021 - 12:00 </span> -->
                        </span>
                    </span>
                </label>

                {% endif %}

                {% endfor %}
                {{form.media}}
            
                <button class="m-auto btn btn-icon btn-icon-start btn-primary mb-1" type="submit">
                    <i data-acorn-icon="send"></i>
                    <span>Trimite</span>
                </button>
            </form>

Спасибо!

Вернуться на верх