我想知道从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>课程。
答案 0 :(得分:1)
不确定您的模型定义如何,但如果您有连接Faculty
,Department
等的外键,则可以一直导航:
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
,依此类推。
基本上两个下划线(__
)用于在外键关系之间导航。