2012-07-06 32 views
-1

讓我們考慮一個學習管理系統的課程結構(稱之爲在線學校)。您的想法? ......「django-mptt」是否適合這個課程結構系統?

我們有這樣的事情:

Course 1 
    Topic 1 
     Sub-Topic 1-1 
     sub-Topic 1-2 
    Topic 2 
     Sub-Topic 2-1 
     Sub-Topic 2-2 

Course 2 
    Topic 1 
     Sub-Topic 1-1 
     sub-Topic 1-2 
    Topic 2 
     Sub-Topic 2-1 
     Sub-Topic 2-2 
    ... 

例如,我們有一個課程「數學1」,「線性代數」,和「線性方程組子課題的主題的「

重要的一點是,我們可以指定一些內容和一些測試到每個節點。

現在Django的MPTT出來:

1)我需要在導航欄內填充的過程中樹。我想這應該是容易和微不足道的。你的想法是什麼?

2)也許我想測試既Sub-Topic 1-1 in Course 1Sub-Topic 2-2 in course 2。不會吧廢墟樹木的理論?那麼,他們是不是樹的一部分,我相信。他們只是一些節點。你怎麼看 ?

謝謝您的回答事先..

+1

它的罰款。你正在處理分層數據,所以是的,django-mptt是適用的。只是爲了它。如果你有問題,*然後*你可以來這裏問問題。 – 2012-07-06 15:10:12

+0

感謝克里斯..像往常一樣:) – Soask 2012-07-06 15:14:07

回答

1

只能回答​​到2點遺憾。

關於理論,你所描述的是不是樹,但一DAG(有向無環圖),這是不是一棵樹了。

然而,很多CMS的建立在Django的MPTT的頂部解決這個問題的方法(感謝Django的MPTT應對森林不只是一棵樹的能力):

  • 他們會把共享節點,在你的情況下,在單獨的樹木中的測試。
  • 其中共享的節點會在樹中,下面子課題1-1和你的情況2-2,可以將一些虛擬節點,它只能作用是指向另一個節點,包含了一個在你的情況下測試。

這是非常像的文件系統上的符號鏈接。

然後,您可以做的一切在一棵樹:

Fall semester 2012 
    Course 1 
    Topic 1 
     sub-topic 1-1 
     sub-topic 1-2 
    Topic 2 
     sub-topic 2-1 
     sub-topic 2-2 
    Test -------------+ 
    Course 2   | 
    Topic 1   | 
     sub-topic 1-1 | 
     sub-topic 1-2 | 
    Topic 2   | 
     sub-topic 2-1 | 
     sub-topic 2-2 | 
    Test ------------+ 
    Tests    | 
    Test 1 <----------' 
     Part 1 
     Part 2 

或者用幾棵樹:

Course 1 
    Topic 1 
    sub-topic 1-1 
    sub-topic 1-2 
    Topic 2 
    sub-topic 2-1 
    sub-topic 2-2 
    Test -------------+ 
        | 
Course 2   | 
    Topic 1   | 
    sub-topic 1-1 | 
    sub-topic 1-2 | 
    Topic 2   | 
    sub-topic 2-1 | 
    sub-topic 2-2 | 
    Test ------------+ 
        | 
Test 1 <------------' 
    Part 1 
    Part 2 
+0

非常感謝..呵呵......這要比我原來想象的更加複雜。所以如果對於每個節點有兩個不同的測試(多選題,正常考試)和「內容(課)」,我應該爲每個節點構建額外的樹? – Soask 2012-07-07 17:21:28

+0

更新:Niceeee圖表...您的建議令人驚歎...大喜歡:) – Soask 2012-07-08 10:29:45