4

嗨我有这种类型的模型

class Post(models.Model):
    title = models.CharField()
    image = models.ImageField()
    # other fields

为了创建一个新帖子,我需要这样的流程:

  • 在新的帖子页面 1 中,用户选择照片并上传(提交)
  • 在新帖子页面 2 中,用户可以看到照片并填写其他字段,例如“标题”

我的问题是如何上传照片并将其显示在下一页中,而无需使用图像字段创建新的 Post 对象。我应该将图像保存在临时目录中吗?在这种情况下,如何保留参考并在第二页中使用它?

谢谢。

4

3 回答 3

1

有几个解决方案

  1. 定义另一个模型以仅保存图像,并在 Post 模型中添加可能是 OneToOneField。在提交 page1 时,创建此图像模型的实例并将其作为图像字段放入 page2。
  2. 使用 html5 文件 API,您可以在图像字段中引用本地文件。因此,您可以使用本地客户端路径在 page2 上显示图像,而无需将其存储在服务器上。参考:在上传之前查看从客户端文件系统中选择的图像?
于 2012-06-26T11:29:50.087 回答
0

首先阅读相关文档,以便了解上传的文件会发生什么: https ://docs.djangoproject.com/en/dev/topics/http/file-uploads/

恕我直言,最简单的解决方案是

1/ 将上传的文件保存在某个临时目录中 - 只需确保您可以以一种或另一种方式提供内容(直接通过前端网络服务器,或者如果您想更多地控制谁可以访问此内容,则通过自定义视图),

2/将临时文件路径和url以一种或另一种方式传递给“下一个”视图(隐藏的表单字段,会话......)。

于 2012-06-26T11:45:40.243 回答
0

我曾经有一张桌子来存储图像(实际上是任何文件:))。每个图像都链接到对象 (FK) 并具有状态 - 草稿、已批准、已删除。所以我不使用临时目录,只是改变图像表中的状态。

于 2012-06-26T12:19:26.887 回答