【发布时间】:2019-11-14 12:31:27
【问题描述】:
我正在用 Django 开发一个文件管理器。我正在使用 SFTP 文件服务器和 django-storage package 来管理文件。
到目前为止,我为用户开发了一些 API 来在他们自己的根目录(对用户来说是抽象的)下创建和修改目录。现在我希望用户能够将他们的文件上传到他们的子目录或在这些子目录之间移动文件,但我不知道怎么做?!
这是我用于文件管理的模型:
def user_directory_path(instance, filename):
return 'user_{0}/{1}'.format(format(instance.owner.id, '010d'), filename)
class UploadedFile(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=150)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
file = models.FileField(upload_to=user_directory_path)
如您所见,当前文件将上传到<server-root>/user_<10digit-userid>/ 目录。
提前致谢。
【问题讨论】:
-
这真的很复杂,因为它不仅仅是移动文件的问题。管理目录(创建目录)并列出它们等...需要您实际上也将目录结构保留在数据库中。你应该看看 django-filer 包,或者作为如何做到这一点的例子,或者只是使用它。
-
@dirkgroten 是的,这很复杂。实际上,我设法在用户想要的任何地方上传文件。现在我正在处理移动文件、复制文件和重命名目录!这些问题的难点在于重命名文件并将更改保存在数据库中。感谢您的指导。
标签: django django-models django-storage python-django-storages