我是django的新手。我的任务是在后台做一个共享文档的功能。文档可以有文件夹,就像谷歌文档一样。我们将在文件夹列表中有文档列表。
我创建了以下模型类:
class Folder(models.Model):
name = models.CharField(max_length=128, unique=True)
def __str__(self) -> str:
return self.name
class File(models.Model):
folder_name = models.ForeignKey(Folder, on_delete=models.CASCADE)
docfile = models.FileField(upload_to='documents/%Y/%m/%d')
def __str__(self) -> str:
return self.name
首先,创建一个文件夹,然后在该文件夹中上传一个文件。我的问题是:
- 在google docs中,我们可以在文件夹中添加文件夹,如果我想在文件夹中添加文件夹,然后在上面存储文件,我该如何更新我的模型呢?
- FileField属性实际上是做什么的?我想把数据存储在postgres数据库中,而不是我的本地存储中。如何处理这个问题?
- 为此,我应该在模型中添加哪些附加功能?
1条答案
按热度按时间i5desfxk1#
要添加对子文件夹的支持,我需要从
Folder
模型中添加一个可以为空的外键到它自身,请查看ForeignKey
的文档,以了解如何引用它自身。要理解
FileField
实际上是做什么的,我建议阅读the documentation about File Uploads。关于文件存储,我不确定将文件存储在数据库中是否是个好主意。如果你不想在常规文件系统中存储文件,Django有一个非常灵活的custom storages API。你可能不需要自己实现替代方案。最有可能的是,别人已经做了它,并创建了一个你可以使用的包。eidogg. django-storages,它增加了对一系列流行的云存储的支持。
总的来说:我建议你在探索Django的新领域时,一定要查阅Django文档。在我看来,文档是Django的关键特性之一。写得这么好,去那里总是一件快乐的事:)