django - 如何使用 django 创建考勤系统?
问题描述
目前我正在为我的大学制作一个学生管理系统的项目。我有一个用户模型和一个配置文件模型。我还添加了一个以用户为外键的考勤模型。当我开始编写参加考勤的表格时,我被困住了。
class Attendance(models.Model):
Student = models.ForeignKey(User, on_delete=models.CASCADE)
Hour = models.CharField(max_length=1, blank=False)
Subject = models.CharField(max_length=8, blank=False)
Date = models.DateTimeField(default=timezone.now)
Presence = models.BooleanField(default=False, blank=False)
def __str__(self):
return f'{self.Student}'
这是我的模板,其中查询集是用户名,应该是默认值。用户的数量,表格的数量应该来。使用此模板,我只能创建一个对象,并迭代最后一个表单的值。当在<form>
里面时,forloop
我得到多个具有相同值的最后迭代形式的对象。
<form method="POST" action="{% url 'academics' %}" style=" padding: 5%">
{% csrf_token %}
{% for query in queryset %}
<input type="text" name="Student" class="form-control" required id="id_Student" value="{{query}}">
<input type="text" name="Hour" class="form-control" required id="id_Hour">
<input type="text" name="Subject" class="form-control" required id="id_Subject">
<input type="checkbox" name="Presence" required id="id_Presence">
{% endfor %}
<button type="Submit">Submit</button>
</form>
我开始了解表单集,但我不知道如何实现这样的复杂事物。这是我的views.py
:
def academics(request):
if request.user.is_staff:
form = forms.AttendanceForm()
context = {
'form': form,
'queryset': User.objects.filter(profile__Year='SY',profile__Department='CSE')
}
if request.method == "POST" :
form = forms.AttendanceForm(request.POST)
if form.is_valid():
student = request.POST.get('Student')
hour = request.POST.get('Hour')
subject = request.POST.get('Subject')
boolean = request.POST.get('Presence')
def bool(boolean):
if boolean == 'on':
return 'True'
else:
return 'False'
form = Attendance(Student=student,Hour=hour,Subject=subject,Presence=bool(boolean))
form.save()
return render(request, 'console/academics.html',context)
else:
context = {
'attends': Attendance.objects.all().exclude(Date=timezone.now()),
'todays': Attendance.objects.filter(Date=timezone.now())[:8]
}
return render(request, 'student/academics.html',context)
任何人都可以在此处更改有关如何使用 formset 的代码。我知道是在寻求公开的帮助,而不是提出疑问。请至少给我提示或正确的视频教程链接!
解决方案
推荐阅读
- c++ - 从 C++ 更改 QML 对象值
- nginx - Nginx Ingress 选择性反向代理位置重写
- quartz-scheduler - 石英和石英工作之间的区别
- python - 在 Pandas 中分组和删除不必要的行
- laravel - IE 和 Safari 上的 Vuejs Laravel 空白页
- android - 工作经理(如果连接到 WFI 并连接到蜂窝网络)
- java - 如何将俄罗斯 WSDL xml 解析为 java 对象
- reactjs - 如果 prop 是组件,如何渲染组件?
- python-3.x - 分组概率分布
- python - 在 Django 可重用应用程序中创建“可选”模型的最佳方法