2011-05-05 143 views
1

我需要上传并附加任意数量的图像到我的模型。该网站是针对房地产经纪人的,因此他们希望将图像附加到其网站的属性页面。我只能想到通过以下方法解决:Django - 多个图像上传

  1. 创建图像另一种模式,并将它们用(编辑:)关联ForeignKey的领域。我不想这样做的原因有很多,主要是因为它混淆了添加新属性的过程(他们必须去两个不同的管理屏幕),因为可能有成千上万的属性,在ManyToMany下降将是一个真正的痛苦。

  2. 创建一个相当复杂的自定义小部件,它会启动一个带有图像模型的弹出窗口。这里的问题是,我需要确保图像在保存后链接到属性,所以我需要找出一种方法来做到这一点(因为当你添加一个新的属性,没有什么可以创建一个链接)。我知道我可以用信号做到这一点,但我不确定我会如何处理多个图像,因为可能有多个值关联。

有没有人有任何建议,我怎么能做到这一点?基本上我只需要一种上传动态数量图像的方式,并以某种方式将它们与我的模型关联起来。

谢谢!

回答

2

由于增加了inline model admin对象,它不会使管理界面复杂化。您可以在属性管理页面下方显示图片列表,内联让您可以将新图片与每个媒体资源相关联。

这几乎是外键方案的典型例子。我会质疑使用多对多的关系,因为一张财产的照片不应该与其他财产相关联(尽管我想在公寓单元的情况下......) 您需要存储关联在属性和图像之间,如果你想让你的数据库以任何方式进行设计,就可以通过外键关系完成。否则,你将不得不把许多文件名拼凑成一个单一的领域,这是非常混乱,以任何理智的方式几乎不可查询的。

或者,如果管理员没有给予足够的灵活性,那么构建允许关联任意数量的图像以上载的ModelForm并不难。

+0

啊,对不起,我的意思是ManyToMany是我希望我的财产可以访问多个不同的图像。实际的'附件'将是一个外键,因为正如你所说,一张图片只能用于每个属性一次。 – Hanpan 2011-05-05 10:06:05

+0

内联模型管理员已经打动了我的想法。谢谢! – Hanpan 2011-05-05 10:44:42