Получать значения флажков в шаблоне django и передавать их в представление

У меня есть модель группы:

class Group(models.Model):
   leader = models.ForeignKey(User, on_delete=models.CASCADE)
   name = models.CharField(max_length=55)
   description = models.TextField()
   joined = models.ManyToManyField(User, blank=True)

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

{% if user.id == group.leader_id %}
  <form action="{% url 'remove_members' group.pk %}" method="POST">
    {% csrf_token %}
    <ul id='leaderList'>  
      {% for member in list %}
        <input type='checkbox'>{{ member }}</input>
      {% endfor %}
    </ul>
    <button type="submit">REMOVE</button>
</form>
{% endif %}

Однако еще до того, как я напишу представление, мне нужно получить доступ к значениям этих флажков и передать их в мое представление remove_members. Представление будет основано на функциях и будет выглядеть примерно так:

def remove_members(request, pk):
    group = Group.objects.get(id=request.POST.get('group_id'))
    #  I need a line here to access the checkbox values from the template so that I can run a for loop
    for member in checkbox_values:
        group.joined.remove(member)
    return HttpResponseRedirect(reverse('group_detail', args=[str(pk)]))

Если я могу получить значения флажков и передать их в это представление при отправке, я думаю, это должно сработать для удаления членов. Есть ли какая-то простая вещь, которую я упускаю для передачи значений?

Необходимо задать имя для входного флажка, которое будет передано в request.POST:

<input type='checkbox' name='member'>{{ member }}</input>

Затем вам нужно использовать getlist() для получения значений для цикла for:

members = request.POST.getlist('member')

Это даст вам их идентификаторы, затем вам нужно получить объекты модели из БД.

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