我已经为此挣扎了一段时间,我已经接近了一些东西。我有四个模型,通过外键按以下顺序相互绑定: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">« 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 »</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 }} ">« 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 »</a>
{% endif %}
</span>
</div>
</div>
{% endfor %}
</div>
目前没有回答
相关问题 更多 >
编程相关推荐