2011-05-05 226 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