【问题标题】:Django - Which model field for dir path?Django - 目录路径的哪个模型字段?
【发布时间】:2020-03-13 17:16:38
【问题描述】:
我需要在我的模型中定义一个字段,它应该在服务器端托管一个有效的目录路径。
基本上只是一个字符串,应该是:
1) 正式有效的类 unix 目录路径
2) 现有的目录路径
尝试使用 FilePathField 和选项 allow_files=False, allow_folders=True 。
但是当我尝试从 django admin CRUD 创建模型的新实例时,我收到一个错误,声称该字段的初始值(默认为空字符串)是不存在的路径...
我觉得这不是正确的方法。也许另一种字段类型可能更合适?也许它应该只是一个简单的字符串? (在这种情况下,我是否能够正确定义所需的验证器?)
感谢任何提示,
托马斯
【问题讨论】:
标签:
python
django
django-admin
django-model-field
【解决方案1】:
尝试先将路径(字符串)保存在字典中,因为它是路径,然后将其作为字典保存在服务器中,这样会更容易工作。
【解决方案2】:
也许尝试循环遍历这些文件系统并在函数路径下指定它们,并分别循环遍历子路径,这应该向您显示整个子树,因为它会一次单独运行每个子树。我认为你遇到了问题,因为 Django 没有运行所有可能的子文件系统。
希望有帮助
【解决方案3】:
经过一些测试,我意识到这个模型字段类型实际上是用于通过浏览文件系统中已经存在的文件/目录来分配值的字段。因此,错误是由于我使用的路径参数(我随机选择的)在文件系统中不存在。
但是,这个 Model 字段仍然符合我的目的,因为必须选择一个已经存在的目录,这肯定会迫使用户分配一个满足上述两个验证点的值。
甚至可以通过包含整个子目录树来进行“深度浏览”。只需使用recursive=True 选项即可。
所以
repository = models.FilePathField("repo_root/", allow_files=False, allow_folders=True, recursive=True)
会成功的。
对于包含许多目录的子树,页面可能会变得无响应。
托马斯