Django中的多个分页不起作用,正在重定向

2024-05-20 10:10:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经为此挣扎了一段时间,我已经接近了一些东西。我有四个模型,通过外键按以下顺序相互绑定:Faculty>;部门>;研究程序>;课程。我创建了分页,搜索我所有的课程。现在我想为只属于特定教员的课程创建分页。例如,我总共有3门课程,其中2门属于信息学系,1门属于医学系,对于每门课程,我需要按每页1门课程分页。 经过多次尝试,我想使用faculties id作为一种进行单独分页的方法,但没有成功。。显示教员的所有课程,而不是仅显示1个,如果单击“下一步”,我将重定向到所有课程的分页。我不知道如何解决这个问题:

@login_required def index(request): query_list = Course.objects.all() query = request.GET.get('q') if query: query_list = query_list.filter(Q(name__icontains=query)) paginator = Paginator(query_list, 1) page = request.GET.get('page') faculty_id = request.GET.get('faculty_id') courses_to_display = None try: courses = paginator.page(page) except PageNotAnInteger: courses = paginator.page(1) except EmptyPage: courses = paginator.page(paginator.num_pages) if not faculty_id: courses_to_display = courses faculties = Faculty.objects.all() for faculty in faculties: f_courses = [] departments = faculty.department_set.all() for department in departments: studies = department.studyprogramme_set.all() for study in studies: for course in study.course_set.all(): f_courses.append(course) paginated_courses = Paginator(f_courses, 1) try: fp_courses = paginated_courses.page(page) except PageNotAnInteger: fp_courses = paginated_courses.page(1) except EmptyPage: fp_courses = paginated_courses.page(paginated_courses.num_pages) faculty.paginated_courses = fp_courses if faculty_id: courses_to_display = fp_courses context = { 'courses': courses_to_display, 'faculties': faculties, 'departments': Department.objects.all(), 'studies': StudyProgramme.objects.all(), 'teachers': Teacher.objects.all() } return render(request, 'courses/index.html', context)
    <div class="col-md-9">
                <div class="jumbotron">
                    <div id="sup">
                        <h4>All Courses</h4>
                        <hr>
                        <br>
                        <ul>
                            {% for course in courses %}
                                <li>
                                    <a href="{{ course.slug }}">{{ course.name }}</a>
                                </li>
                            {% endfor %}
                        </ul>
                        <div class="pagination">
                            <span class="step-links">
                             {% if courses.has_previous %}
                                 <a href="?page=1">&laquo; first</a>
                                 <a href="?page={{ courses.previous_page_number }}">previous</a>
                             {% endif %}
                                <span class="current">
                              {{ courses.number }}
                               </span>
                                {% if courses.has_next %}
                                    <a href="?page={{ courses.next_page_number }}">next</a>
                                    <a href="?page={{ courses.paginator.num_pages }}">last &raquo;</a>
                                {% endif %}
                          </span>
                        </div>
                    </div>
                    {% for faculty in faculties %}
                        <div id="fac_{{ faculty.pk }}_tab" style="display:none;">
                            <h3> {{ faculty.name }} courses</h3>
                            <ul>
                                {% for department in faculty.department_set.all %}
                                    {% for study in department.studyprogramme_set.all %}
                                        {% for course in study.course_set.all %}
                                            <li>
                                                <a class="first"
                                                   href={{ course.slug }}>{{ course.name }}</a>
                                            </li>
                                        {% endfor %}
                                    {% endfor %}
                                {% endfor %}
                            </ul>
                            <div class="pagination">
                            <span class="step-links">
                             {% if faculty.paginated_courses.has_previous %}
                                 <a href="?page=1&faculty_id={{ faculty.id }} ">&laquo; first</a>
                                 <a href="?page={{ faculty.paginated_courses.previous_page_number }}&faculty_id={{ faculty.id }}">previous</a>
                             {% endif %}
                                <span class="current">
                              {{ faculty.paginated_courses.number }}
                               </span>
                                {% if faculty.paginated_courses.has_next %}
                                    <a href="?page={{ faculty.paginated_courses.next_page_number }}&faculty_id={{ faculty.id }}">next</a>
                                    <a href="?page={{ faculty.paginated_courses.paginator.num_pages }}&faculty_id={{ faculty.id }}">last &raquo;</a>
                                {% endif %}
                          </span>
                            </div>
                        </div>
                    {% endfor %}
                </div>

Tags: individforpageallqueryclass