Как создать систему посещаемости с Django? - PullRequest
0 голосов
/ 25 июня 2019

В настоящее время я работаю над проектом по созданию системы управления студентами для моего колледжа.У меня есть модель пользователя и модель профиля.Я также добавил модель посещаемости с пользователем в качестве внешнего ключа.Я застрял в то время как я начал писать форму для входа в посещаемость.

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 здесь.Я знаю, что прошу открытой помощи, а не спрашивать сомненияПожалуйста, дайте мне подсказки или исправьте ссылки на видео-уроки!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...