1

私は大学生向けの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プラグイン?または、どうすればこれを修正できますか?明確でない場合はお知らせください。または、これ以上のコンテキストを提供できます。

4

1 に答える 1

2

regroup タグを使用する必要があります。例えば:

<ul id="departments">
    {% for department in departments %}
    <li rel="department_{{ department.id }}">{{ department.name }}</li>
    {% endfor %}
</ul>

{% regroup courses by departments as department_list %}

{% for department in department_list %}
    <ul id="department_{{ department.grouper.id }}">
        {% for course in department.list %}
          <li rel="course_{{ course.id }}">{{ course.name }}</li>
        {% endfor %}
    </ul>
{% endfor %}

そして、教授たちも同じです。大量のデータがある場合は、ajax リクエストを使用することをお勧めします。

于 2012-12-22T15:52:58.430 に答える