私は大学生向けのWebアプリケーションを構築しています。私が今見ているのはメイン画面です。ユーザーは自分の部門(つまりCSE)、クラス(つまり、CSE 101)、教授(複数/クラスがある場合)を選択します。
したがって、フローは次のようになります。ECON->ECON101->プロフェッサー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ページに表示する必要があります。しかし、deparment->course-> professor b / cを適切にリンクすることはできません。現在私が持っているのは、リストを表示するためのページ上の関数の1つだけです。
これを回避する方法はありますか?たぶんより良いjQueryプラグイン?または、どうすればこれを修正できますか?明確でない場合はお知らせください。または、これ以上のコンテキストを提供できます。