0

我有文件夹列表中的文件名。该列表包含 2000 个这样的文件名

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

等等。

我想在数据库中索引这些文件,以便我可以拥有分层目录结构。

在我的 Django 应用程序中,我想首先显示根级菜单,例如

countries --- US , Australia, canada

然后我有人点击国家然后它得到第二级文件夹等等,最后如果没有更多文件夹我想查看文件。

而不是每次都查询我的存储,我想将所有这些信息存储在我的数据库中,以便我的网页从数据库中显示,当用户单击下载时,我从我的Storage

我无法找到我应该如何为此制作模型或数据库表

4

1 回答 1

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

之后将你的文件移动到一个或几个目录中(阅读这个我可以在一个目录中放多少个文件?)你也可以重命名它们(例如通过使用文件中的哈希)。

更新模型文件以放置文件的新路径。

完成此操作后,您可以轻松显示文件并构建文件路径等。

对于模型节点,使用 [django-mptt][1](django 有其他解决方案,google it)来获得一个高效的 API 来管理树状模型。

您也可以创建自己的 Django Storage Backend(或在 Internet 上找到很多解决方案)。

更新

您可以使用 django admin 添加新文件。您应该使用 amazon 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

在这种情况下,您不必更新索引。

于 2013-06-21T08:20:25.847 回答