我如何为每个slu pa分页?

时间:2018-02-21 19:50:22

标签: python django

我想知道从slug页面分页项目的正确方法是什么。我尝试了一些东西,但我似乎无法弄清楚如何正确传递属于该教师的课程并将其分页为每页1门课程。 这是我试过的:

def faculty_filter(request, faculty_slug):
    qr = get_object_or_404(Faculty, faculty_slug=faculty_slug)
    query_list = Course.objects.get(qr)
    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')
    try:
        courses = paginator.page(page)
    except PageNotAnInteger:
        courses = paginator.page(1)
    except EmptyPage:
        courses = paginator.page(paginator.num_pages)
    context = {
        'courses': courses,
        'faculties': Faculty.objects.filter(faculty_slug=faculty_slug),
        'departments': Department.objects.all(),
        'studies': StudyProgramme.objects.all(),
    }
    return render(request, 'courses/filters/faculty_filter.html', context)

注意:课程不直接属于学院。我有四个按外键绑定的模型:Faculty>部门> StudyProgramme>课程。

1 个答案:

答案 0 :(得分:1)

不确定您的模型定义如何,但如果您有连接FacultyDepartment等的外键,则可以一直导航:

query_list = Course.objects.filter(programme__department__faculty__slug=faculty_slug)

或者,或者,因为你有教师实例:

qr = get_object_or_404(Faculty, faculty_slug=faculty_slug)
query_list = Course.objects.filter(programme__department__faculty=qr)

请注意,我假设Course通过名为StudyProgramme的外键与programme相关联,而StudyProgramme通过外国与Department相关联密钥名为department,依此类推。

基本上两个下划线(__)用于在外键关系之间导航。