您可以隨時嘗試將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提交給服務器,並返回標記以在附件字段中插入文件。
目前尚不清楚你的問題是什麼。請你能詳細解釋一下。 – 2010-03-26 10:52:49
它就像gmail中的「附加另一個文件」功能,用戶在其中顯示文件上傳字段,並且隨着用戶點擊「附加另一個文件」加上按鈕 – qulzam 2010-03-26 11:44:25
I認爲你應該向我們展示更多你的代碼。根據你的說法,我認爲你很可能實際上試圖將多個值傳遞給一個表單字段。你應該看一下「formset」和「inline formsets」。 – 2010-03-26 12:45:07