django-在循环中获取无线电按钮的输入
我需要一个缺席控制的页面,所有用户都循环循环,并且在每个用户显示3个无线电按钮时:存在,缺席和允许的_absent。为每个用户填写后,应提交。
这是我代码的重要部分:
html baksgewijs_attendance.html
<form class="createattendance-form" action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.non_field_errors }}
{% for user in users %}
{{ user }}
<div class="form-group">
<div>
{{ form.attendance}}
{{ form.attendance.errors }}
</div>
</div>
{% endfor %}
<br>
<div class="form-group">
<button type="submit" class="btn btn-primary save"> Save absence </button>
</div>
</form>
models.py
class Attendance(models.Model):
attendance = models.CharField(max_length=13)
user = models.ForeignKey('puma_core.User', on_delete=models.CASCADE)
baksgewijs = models.ForeignKey(Baksgewijs, on_delete=models.CASCADE)
def __str__(self):
return self.attendance
forms.py
attendance_choices = (
('absent', 'Afwezig'),
('allowedabsent', 'Geoorloofd afwezig'),
('present', 'Aanwezig'),
)
class CreateAttendance(forms.ModelForm):
class Meta:
model = Attendance
fields = ['attendance']
widgets = {
'attendance': forms.RadioSelect(choices=attendance_choices)
}
views.pys.py
def baksgewijs_attendance(request):
peloton = Peloton.objects.all()
users = User.objects.all()
if request.method == "POST":
form = CreateAttendance(request.POST, request.FILES)
if form.is_valid():
form.save()
message = messages.success(request, ("De aanwezigheid is opgeslagen"))
return HttpResponseRedirect(reverse("baksgewijs_index"), {
"message" : message
})
else:
return render(request, 'baksgewijs/baksgewijs_attendance.html', {"form": CreateAttendance})
user.objects.all提供了所有用户名。
问题是:这样,我只能总共选择一个选项,而我希望能够选择每个用户的缺席。我该如何解决?
I need a page for absence control, where there are looped over all users and with each user is displayed 3 radio buttons : present, absent and allowed_absent. After it is filled in for each user, it should be submitted.
This is the important part of my code:
HTML baksgewijs_attendance.html
<form class="createattendance-form" action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.non_field_errors }}
{% for user in users %}
{{ user }}
<div class="form-group">
<div>
{{ form.attendance}}
{{ form.attendance.errors }}
</div>
</div>
{% endfor %}
<br>
<div class="form-group">
<button type="submit" class="btn btn-primary save"> Save absence </button>
</div>
</form>
Models.py
class Attendance(models.Model):
attendance = models.CharField(max_length=13)
user = models.ForeignKey('puma_core.User', on_delete=models.CASCADE)
baksgewijs = models.ForeignKey(Baksgewijs, on_delete=models.CASCADE)
def __str__(self):
return self.attendance
forms.py
attendance_choices = (
('absent', 'Afwezig'),
('allowedabsent', 'Geoorloofd afwezig'),
('present', 'Aanwezig'),
)
class CreateAttendance(forms.ModelForm):
class Meta:
model = Attendance
fields = ['attendance']
widgets = {
'attendance': forms.RadioSelect(choices=attendance_choices)
}
views.py
def baksgewijs_attendance(request):
peloton = Peloton.objects.all()
users = User.objects.all()
if request.method == "POST":
form = CreateAttendance(request.POST, request.FILES)
if form.is_valid():
form.save()
message = messages.success(request, ("De aanwezigheid is opgeslagen"))
return HttpResponseRedirect(reverse("baksgewijs_index"), {
"message" : message
})
else:
return render(request, 'baksgewijs/baksgewijs_attendance.html', {"form": CreateAttendance})
User.objects.all gives all user names.
The problem is: in this way I can only select one option in total, while I want to be able to select the absence per user. How can I solve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该考虑使用表单集代替表单:
.djangoproject.com/en/4.0/topics/forms/Forms/
给您一个想法
。
You should look into using a formset instead of a form:
https://docs.djangoproject.com/en/4.0/topics/forms/formsets/
To give you an idea forms.py whould look something like this:
And then the vieuws should be modified to use formsets