【问题标题】:How to make Nested Models in django如何在 Django 中制作嵌套模型
【发布时间】:2023-01-12 18:43:34
【问题描述】:

我是 django 的新手。 我的任务是在后端为共享文档制作一个功能。文档可以有文件夹,比如 google docs。我们将在文件夹列表中包含文档列表。

我创建了以下模型类:

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

首先,将创建一个文件夹。然后将在该文件夹中上传一个文件。 我的问题是:

  • 在谷歌文档中,我们可以在文件夹中包含文件夹。如果我想添加在文件夹中添加文件夹然后在其上存储文件的功能,我该如何更新我的模型。
  • FileField 属性的实际作用是什么?我想将数据存储在 postgres 数据库中,而不是我的本地存储中。如何处理?
  • 为此,我应该在我的模型中添加哪些附加功能?

【问题讨论】:

    标签: python django django-models django-rest-framework django-serializer


    【解决方案1】:

    要添加对子文件夹的支持,我会从 Folder 模型向自身添加一个可为空的外键。查看the documentation for ForeignKey 以了解如何引用自身。

    要了解 FileField 的实际作用,我建议阅读 the documentation about File Uploads

    关于文件存储,我不确定将文件存储在数据库中是个好主意。如果你不想在常规文件系统中存储文件,Django 有一个非常灵活的 API custom storages。您可能不需要自己实施替代方案。最有可能的是,其他人已经制作并创建了一个您可以使用的包。例如。 django-storages 添加了对一系列流行云存储的支持。

    总的来说:我建议您在探索 Django 的新领域时总是转向 Django 文档。在我看来,文档是 Django 的关键特性之一。写得很好,去那里总是很开心:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 2020-07-05
      相关资源
      最近更新 更多