0

我需要在我的模型中定义一个字段,它应该在服务器端托管一个有效的目录路径。基本上只是一个字符串,应该是:

1) 正式有效的类 unix 目录路径

2)现有的目录路径

尝试FilePathField使用 options allow_files=False, allow_folders=True。但是当我尝试从 django admin CRUD 创建模型的新实例时,我收到一个错误,声称该字段的初始值(默认为空字符串)是一个不存在的路径......

我有一种感觉,这不是正确的方法。也许另一种字段类型可能更合适?也许它应该只是一个简单的字符串?(在这种情况下,我是否能够正确定义所需的验证器?)

感谢您的任何提示,

托马斯

4

3 回答 3

1

尝试首先将路径(字符串)保存在字典中,因为它是一个路径,然后将它作为字典保存在服务器中,这样它会工作并且会容易得多。

于 2020-03-13T18:16:02.410 回答
1

也许尝试遍历这些文件系统并在函数路径下指定它们,并分别遍历子路径,这应该向您显示整个子树,因为它会一次单独运行每个子树。我认为你的问题是因为 Django 没有运行所有可能的子文件系统。

希望有帮助

于 2020-03-14T13:29:08.833 回答
0

经过一些测试,我意识到这个模型字段类型实际上用于通过浏览文件系统中已经存在的文件/目录来分配值的字段。因此,错误是由于我使用的路径参数(我随机选择的)在文件系统中不存在。

但是,这个 Model 字段仍然符合我的目的,因为必须选择一个已经存在的目录,这肯定会迫使用户分配一个满足上述两个验证点的值。

甚至可以通过包含整个子目录树来进行“深度浏览”。只需使用该recursive=True 选项。

所以

repository = models.FilePathField("repo_root/", allow_files=False, allow_folders=True, recursive=True)

会成功的。

对于具有许多目录的子树,页面可能会变得无响应。

托马斯

于 2020-03-13T22:35:30.427 回答