2013-06-21 30 views
0

我有文件夾列表中的文件的名稱。該列表包含這樣的2000個文件名我怎樣才能使樹從Python列表中的菜單

Countries/US/newyork/file1.pdf 
Countries/Australia/Sydney/file1.pdf 
Countries/Canada/Toronto/bla/blabla/file2.pdf 

等等。

我想索引數據庫中的這些文件,以便我可以有層次結構的目錄結構。

在我的Django應用程序,我想第一根級菜單像

countries --- US , Australia, canada

顯示然後我有人點擊國家,那麼它獲得的文件夾的第二級等,並在結束時,我想如果沒有其他文件夾,請查看文件。

,而不是查詢我的存儲埃夫裏的時候,我想存儲所有的信息在我的數據庫,使我的網頁是從數據庫中顯示,當用戶點擊下載的話,我從我的Storage

得到的文件我是無法找到我應該怎麼做對於

+0

你能改述第一句「我有文件夾名稱列表中的文件。」到可以理解的東西?哪個列表? –

+0

@J.C.Leitão,我從亞馬遜S3獲取該列表,並且我想要索引我的數據庫中的列表 – user1958218

回答

1

模型或數據庫表,我建議如下方式:

創建模型來存儲你的樹結構和文件,例如:

class Node(TreeModel): 
    parent # foreign key to Node 

class File(Model): 
    node # foreign key to Node 
    name # name of file 
    path # path to the file on disk for example 

是移動文件中的一個或幾個目錄之後(閱讀本How many files can I put in a directory?) 你也可以(通過使用哈希從文件例如)重新命名。

更新模型文件放置有新路徑到您的文件。

已經做到了這一點,你能輕鬆顯示文件和構建路徑文件等

對於模型節點使用[Django的MPTT] [1](有Django的其他解決方案,谷歌吧)獲得一個有效的API來管理一個樹狀模型。

您也可以創建自己的Django存儲後端(或者在Internet上找到許多解決方案)。

更新

您可以通過使用admin界面添加新文件。你應該使用亞馬遜s3 django存儲後端http://django-storages.readthedocs.org/en/latest/backends/amazon-S3.html

變化:

class File(Model): 
    node # foreign key to Node 
    name # name of file 
    file # django models.FileField 

在這種情況下,你有沒有更新索引。

+0

感謝您的信息。我使用亞馬遜S3作爲我的存儲。此外,我正在考慮每週或當我添加新文件時建立索引。我正在考慮首先刪除舊筆記並每次重新填充。我運行更新文件索引的cron作業。那是好的 – user1958218

+0

我沒有undertsand,爲什麼我不需要更新索引。因爲假設我從S3中刪除3個文件,但是我的數據庫仍然有這些文件 – user1958218

+0

我的意思是,如果您使用django-admin管理文件,則不需要更新索引。例如,如果您要刪除或創建文件,您應該通過django-admin刪除或創建它。 (刪除你必須創建信號,在其中物理刪除文件http://stackoverflow.com/questions/5372934/how-do-i-get-django-admin-to-delete-files-when-i-remove -an-對象從最數據B)。當然,如果你使用外部工具來管理你的文件,通過Django無法工作,你應該維護你的索引(在這種情況下表)。 –