2010-05-26 59 views
2

這是我在這個真棒網站上的第一篇文章,從中我已經找到了一些具有挑戰性的問題的答案。榮譽社區!一個單一的頁面來創建一個父對象及其相關的子對象

我是新來的Django世界,所以我希望能從這裏找到一些Django專家的幫助。提前致謝。


產品型號:

class Item(models.Model): 
    name = models.CharField(max_length=50) 

ItemImage型號:

class ItemImage(models.Model): 
    image = models.ImageField(upload_to=get_unique_filename) 
    item = models.ForeignKey(Item, related_name='images') 

正如你可以從上面的模型定義來講,每一個項目的對象可以有很多ItemImage對象。


我的要求列示如下:

  1. 一個Web頁面,允許用戶 創建一個新的項目,同時上傳 與項目相關聯的圖像。當點擊頁面上的「保存」按鈕時,應該在數據庫中一起創建項目和ItemImages對象。
  2. 我在自定義配置文件中創建了一個變量,名爲NUMBER_OF_IMAGES_PER_ITEM。它基於這個變量,系統生成每個項目的圖像字段數量。

問題:

  1. 應在形式和模板會是什麼樣子? ModelForm可以用來達到要求嗎?
  2. 對於視圖函數,除了確保在ItemImage對象之前保存Item之外,還需要注意什麼?

回答

0

考慮到您正在使用文件上傳字段,我不確定它是否適用於Web應用程序。如果項目名稱驗證失敗會怎樣?如果再次顯示錶單,則所有文件上傳字段都將變爲空白,並且用戶必須再次填充它們。

重新技術方面 - ModelForm將爲Item模型執行操作,但您也應該使用ItemImage的模型formset。詳細信息請參見http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-an-inline-formset-in-a-view

+0

謝謝雅羅斯拉夫。我能夠嘗試內嵌formset一點,我認爲這正是我需要的。 其他資源/示例online formset: http://stackoverflow.com/questions/1113047/creating-a-model-and-related-models-with-inline-formsets http://djangosnippets.org/snippets/1246 /#評論 至於圖片上傳的細節,這是一個單獨的問題,我需要自己研究。 – tamakisquare 2010-06-02 06:17:57