Как отобразить статус посещаемости за месяц из базы? - PullRequest
0 голосов
/ 20 января 2020

Я новичок в Django и в настоящее время работаю над системой управления школой, особенно над модулем посещаемости. В этом модуле после ежедневного посещения учителей по перекличке их статус в таблице TeachersAttedance изменяется на «Присутствует», «Поздно» или «Отсутствует».

Я могу представить статус посещаемости учителя за день в таблице TeachersAttedance в модель. Теперь проблема заключается в том, как извлечь эти данные и отобразить их в табличном формате с учетом дней месяца в качестве заголовка в таблице.

По сути, я хочу, чтобы в зависимости от дня посещаемость учителей в таблице в каком месяце пользователь выбирает. В настоящее время у меня проблема с поиском решения этой проблемы.

вот мои views.py

def teacher_attendance_report(request):
context = {}
form = TeacherAttendanceForm(request.POST)
if request.method == 'POST':
    if request.POST.get('group_by'):
        grab_data_passed = request.POST.get('group_by')
        #create caledar with days of the grabbed month
        z=0
        range=32
        days=[]
        if z< range:
            dats = TeacherAttendance.objects.filter(date__month=grab_data_passed)[z].date
            z+=1
            y=dats.month
            x=dats.year
            cal = calendar.TextCalendar(calendar.WEDNESDAY)
            for day in cal.itermonthdays(x, y):
                days.append(day)
            context['days']=days    

        teacher = User.objects.filter(is_teacher=True)
        get_attendance=TeacherAttendance.objects.filter(date__month=grab_data_passed)
        context['get_attendance']=get_attendance  
        context['teachers'] = teacher
        return render(request, 'Reports/teacher_attendance_report_details.html', context)
context={'form':form}
return render(request, 'Reports/teacher_attendance_report_index.html', context)

вот таблица посещаемости учителя, которую я использую , models.py

class TeacherAttendance(models.Model):
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, blank=False, null=True)
date = models.DateField()
status = models.CharField(max_length=50, choices=ATTENDANCE)
objects = models.Manager()

class Meta:
    default_permissions = ('view', 'add', 'change', 'delete')
    ordering = ["date", ]
    get_latest_by = "date"

и вот как я реализую шаблон посещаемость. html

 <table id="datatable-responsive"
                           class="datatable-responsive table table-striped table-bordered dt-responsive nowrap" cellspacing="0" width="100%">
                    <thead>
                     <tr>   
                    <th>Teacher <i class="fa fa-long-arrow-down" z></i> - Date <i class="fa fa-long-arrow-right"></i></th>
                    {% for day in days%}{% if day > 0%}<th>{{day}}</th> {% endif %}
                    {%endfor%}
                    </tr>
                    </thead>
                    <tbody>
                     {% for teacher in teachers %}
                      <tr>
                       <td>{{ teacher }}</td>
                       {% for details in get_attendance %}
                       {% for day in days %}
                        {% if day == details.date.day %}
                        <td>{{ details.status }}</td>
                         {% else %}
                         <td>--</td>
                        {% endif %}
                       {%endfor%}
                       {%endfor%}
                      </tr>
                      {%endfor%}
                    </tbody>
                    </table>

I ' В настоящее время я получаю таблицу с только статусами, которые не соответствуют статусу посещаемости каждого учителя. Другая проблема заключается в том, что столбцов значений больше, чем дней (отмечены красным на изображении).

Любые советы действительно приветствуются, спасибо вам большое. What am currently getting in the browser

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