【发布时间】:2013-12-24 09:58:59
【问题描述】:
我有一个基本上描述 HTML 页面的页面模型。然后使用 URL 为页面提供服务,例如 http://www.mysite.com/page/1234/ 用于 id (pk) 1234 的页面。
我希望能够将图像添加或附加到我的页面。因此,我想使用带有 Page 对象外键的 Image 类:
class Page(models.Model):
title = ...
content = ...
class Image(models.Model):
page = models.ForeignKey(Page)
image = models.ImageField(...)
这是我的问题:我想使用以下形式的 url 将图像传递给客户端: http://www.mysite.com/images/1234/image_name.jpg,即包含页面 ID 的 URL。同样在服务器上,路径应该反映页面结构:/path/to/media/images/1234/image_name.jpg
我不知道如何解决这个问题。一方面,我想保留与路径格式相关的 ImageField 功能。比如上传两张同名图片时,Django会创建两条以“image.jpg”和“image_2.jpg”结尾的路径来区分两张图片。
另一方面,upload_to 选项的功能有限,我不知道如何在路径中插入页面 id。特别是一些棘手的情况,比如在创建页面的同时上传图片(使用相同的表单),这意味着在上传图片之前应该生成页面id。
制作一个具有上述行为的图像模型是否相当容易?如果是这样,我必须如何修改 Image 模型以在图像路径中插入页面 id?
看过Customize save path for ImageField的问题,但是没有解决主键可能没有赋值的问题。
谢谢。
【问题讨论】:
标签: django django-models