Django - По умолчанию на нескольких радиокнопках
Я делаю контроль отсутствия, где вы выбираете присутствие/отсутствие для каждого пользователя с помощью радиокнопки. Этот контроль отсутствия уже работает. Но сейчас, когда вы сохраняете отсутствие и снова открываете страницу, все радиокнопки не выбраны, поэтому невозможно увидеть, что было заполнено. Как я могу исправить это, чтобы вы могли видеть, каким способом были выбраны радиокнопки?
Контроль отсутствия сохраняется через этот вид:
def baksgewijs_attendance(request, baksgewijs_id, peloton_id):
peloton = Peloton.objects.get(id=peloton_id)
users = peloton.users.all()
baksgewijs = Baksgewijs.objects.get(id=baksgewijs_id)
random_list = list()
for usertje in users:
if Absences.objects.filter(date=baksgewijs.date, user=usertje).exists():
random_list.append(getattr(Absences.objects.get(date=baksgewijs.date, user=usertje), "explanation"))
else:
random_list.append("")
zipped_list = zip(random_list, users)
if request.method == "POST":
print(request.POST)
id_list = request.POST.getlist('id')
for id in id_list:
if request.POST.getlist(id):
attendance = Attendance()
attendance.user = User.objects.get(pk=id)
attendance.attendance = request.POST.getlist(id)[0]
attendance.baksgewijs = Baksgewijs.objects.get(id=baksgewijs_id)
attendance.save()
message = messages.success(request, ("De aanwezigheid is opgeslagen"))
return HttpResponseRedirect(reverse("baksgewijs_index"), {"message" : message})
return render(request, "baksgewijs/mbaksgewijs_attendance.html", {
"users" : users,
"peloton" : peloton,
"baksgewijs" : baksgewijs,
"zipped_list" : zipped_list
})
Это baksgewijs/mbaksgewijs_attendance.html:
<form action="{% url 'create_attendance' baksgewijs.id peloton.id %}" method="post">
{% csrf_token %}
<div class="table-responsive fixed-length">
<table id = "userTable" class="table table-striped table-hover table-sm table-bordered">
<tbody>
{% for reason, user in zipped_list %}
<tr>
<td> {{ user }} <br> {{ reason }} </td>
<td>
<input type='hidden' value='{{user.id}}' name='id'>
<div class="form-check">
<input class="form-check-input" type="radio" name={{user.id}} id="radios" value="Aanwezig">
<label class="form-check-label" for="flexRadioDefault1">
Aanwezig
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name={{user.id}} id="radios" value="Afwezig">
<label class="form-check-label" for="flexRadioDefault2">
Afwezig
</label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name={{user.id}} id="radios" value="Geoorloofd afwezig">
<label class="form-check-label" for="flexRadioDefault2">
Geoorloofd afwezig
</label>
</div>
</td>
</tr>
{% empty %}
Er zijn geen gebruikers in dit peloton.
{% endfor %}
</tbody>
</table>
Три радиокнопки: присутствует, отсутствует и разрешено отсутствие.
url "create_attendance" выглядит следующим образом:
path("attendance/<int:baksgewijs_id>/<int:peloton_id>", views.baksgewijs_attendance, name="create_attendance")
Модель посещаемости:
class Attendance(models.Model):
attendance = models.CharField(max_length=256)
user = models.ForeignKey('puma_core.User', on_delete=models.CASCADE)
baksgewijs = models.ForeignKey(Baksgewijs, on_delete=models.CASCADE)
def __str__(self):
return f'{self.user} is {self.attendance} bij {self.baksgewijs}'
Заранее спасибо, очень нужна помощь :)