2010-03-26 90 views
-1

我想在同一個模板上添加相同的django表單實例。我已經添加了一個之前和其他添加動態使用JavaScript。使用javascript動態插入django表單到模板中?

例如「形式」是django的形式newcell.innerHTML = {{ form.firstname }}; 的問題是,當我提交表單,鑑於請求對象只有一個值(即不添加使用JavaScript)我怎樣才能得到。動態添加的其他表單元素值的值運行時

這與gmail中的「附加另一個文件」功能類似,其中向用戶呈現文件上傳字段並將新字段添加到DOM隨着用戶點擊「附加另一個文件」加按鈕

+0

目前尚不清楚你的問題是什麼。請你能詳細解釋一下。 – 2010-03-26 10:52:49

+0

它就像gmail中的「附加另一個文件」功能,用戶在其中顯示文件上傳字段,並且隨着用戶點擊「附加另一個文件」加上按鈕 – qulzam 2010-03-26 11:44:25

+2

I認爲你應該向我們展示更多你的代碼。根據你的說法,我認爲你很可能實際上試圖將多個值傳遞給一個表單字段。你應該看一下「formset」和「inline formsets」。 – 2010-03-26 12:45:07

回答

0

您可以隨時嘗試將FileField分隔爲FileModel

看看下面的僞代碼(如基於內存的python - 我現在已經轉移到clojure)。

models.py

class FileModel(models.Model): 
    file = models.FileField() 
    ... 

class ThingToWhichYoureAttaching(models.Model): 
    name = models.CharField() 
    attachments = models.ManyToManyField(FileModel) 
    ... 

forms.py

class FileForm(forms.ModelForm): 
    class Meta: 
    model=FileModel 

class ThingForm(forms.ModelForm): 
    attachments = forms.MultipleChoiceField()#override the manytomany form field with style field of your choice. 
    class Meta: 
    model=ThingToWhichYoureAttaching 

當他們彈出用加號按鈕的窗口,顯示FileForm但主頁上留下ThingForm不變。對於沒有javascript的人,您也可以在主頁上使用ThingForm的初始FileField。只要確保在ThingForm之前處理FileForm,以便文件可用於Thing。

處理彈出窗體時,您可以使用AJAX(我建議jquery)將FileForm提交給服務器,並返回標記以在附件字段中插入文件。