首页 > 解决方案 > 如何使用 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 的代码。我知道是在寻求公开的帮助,而不是提出疑问。请至少给我提示或正确的视频教程链接!

标签: django

解决方案


推荐阅读