Получать значения флажков в шаблоне 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')
Это даст вам их идентификаторы, затем вам нужно получить объекты модели из БД.