我正在为大学生构建一个网络应用程序。我现在在主屏幕上——用户将选择他们的部门(即 CSE)、班级(即 CSE 101)和教授(如果有多个/班级)。
所以流程看起来像这样 ECON --> ECON 101 --> Prof. X。
所以我有3个模型,系,课程,教授
class Department(models.Model):
subject = models.CharField(max_length = 25)
class Course(models.Model):
department = models.ForeignKey(Department)
number = models.CharField(max_length = 50)
name = models.CharField(max_length = 100, blank = True, null = True)
class Professor(models.Model):
course = models.ForeignKey(Course)
name = models.CharField(max_length = 50)
我用 3 个视图构建了这个。我的第一个视图显示了所有部门。根据用户点击的部门,它将加载一个新页面,显示与该部门相关的所有课程。然后,当用户点击一门课程时,它会加载一个新页面,显示与该课程相关的所有教授。
#urls.py
url(r'^$', 'index'),
#views.py
def index(request):
a = Department.objects.all()
return render_to_response('qanda/index.html', {'departments': a})
#index.html
{% for department in departments %}
<li><a href="/home/{{ department.id }}/">{{ department.subject }}</a></li>
{% endfor %}
#urls.py
url(r'^(?P<department_id>\d+)/$', 'courses'),
#views.py
def courses(request, department_id):
a = Department.objects.get(pk = department_id)
b = Course.objects.filter(department = a)
return render_to_response('qanda/courses.html', {'department':a,'courses':b})
#courses.html
{% for course in courses %}
<li><a href="/home/{{ department.id }}/{{ course.id }}/">{{ course.department }} {{ course.number }} {{ course.name }}</a></li>
{% endfor %}
等等。
现在它可以工作了,我想让它看起来更好一点,所以我使用了一个 jQuery 插件jGlideMenu(参见示例)。但是,要使插件正常工作,我需要在 1 个 HTML 页面上显示所有部门、课程和教授。但我无法正确链接部门 -> 课程 -> 教授 b/c 我目前所拥有的只是页面上显示列表的 1 for 功能。
有没有办法解决?也许是一个更好的 jQuery 插件?或者我该如何补救?如果不清楚,请告诉我,或者我可以提供更多上下文。