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