我有一個formset,我在視圖中初始化它。表單的一個字段是FileField。我必須向用戶顯示他/她以前的文件名的名稱。因爲我無法初始化FileField,所以我想發送列表中的文件名。 (例如,當你有一個Charfield時,你可以在視圖中初始化它,當你渲染到模板時,你會看到一個填充了這些數據的輸入,但是當你有文件上傳字段時,你不能在視圖中填充它,發送到模板)。我不知道如何在formset和列表中同時循環表單。另一件事是當我初始化formset和呈現模板(我的意思是例如寫data['form-0-Team']='team1'
,但我不能寫data['form-0-Team']='a.png'
,所以當我渲染模板時,我看到名爲'團隊'字段填充(值= team1 )和名爲'文件'的字段未填寫,並顯示錯誤「需要填寫字段」ID)。雖然這是我第一次訪問此頁面,但我的方法不是POST。 (USUALLY表單錯誤顯示當用戶點擊提交,並在視圖中檢查,如果request.method =='POST',然後檢查如果form.is_valid,它返回到模板並顯示錯誤,但在我的,它顯示錯誤第一次用戶訪問該頁面並且在他/她發佈數據之前)。 我希望我能說我的問題。你能指導我解決這個問題嗎?真的感謝。在formset和列表中同時循環表單+ FileField所需的錯誤:django
def myFunc(request):
flagFormSet = formset_factory(FlagFileBaseForm)
if request.method == 'POST':
formset = flagFormSet(request.POST, request.FILES)
if formset.is_valid():
# do s.th
else:
data = {
'form-TOTAL_FORMS': 5,
'form-INITIAL_FORMS': u'0',
'form-MAX_NUM_FORMS': u'',
# add initial form data to it
}
list=['a.png', 'b.png', 'c.png', 'd.png' , 'f.png']
formset = flagFormSet(data)
return render_to_response('myPage.html', RequestContext(request, { 'formset': formset, 'list':list}))
和我的模板:
<form method="post" action="" enctype="multipart/form-data">
{{ formset.management_form }}
{% for form in formset.forms %}
<div class="form">
<div class="form-row Team">
<div>
<label class="required" for="id_Team">Team:</label>
{{ form.Team }}
{{ form.Team.errors }}
</div>
</div>
<div class="form-row File">
<div>
<label class="required" for="id_File">File:</label>
{{ form.File }}
{{ form.File.errors }}
</div>
#here i want show the name of previous file
</div>
</div>
{% endfor %}
</form>
編輯: 當前結果(同時請求未發佈,則顯示錯誤)
期望的結果(形式不與文件名錯誤)
我不明白對不起 – catherine 2013-03-10 08:04:39
我認爲你可能需要重新寫一下你的問題。當你說'我無法初始化FileField'或'當我初始表格'時,你是什麼意思? '初始'是一個形容詞而不是動詞。 (既然你在問題的前面已經正確地使用了'initialize'這個詞,假定這不是你的意思,這似乎是公平的)。 – 2013-03-10 08:27:29
如果我問我的問題不好,我真的很抱歉。我重寫它並希望你明白。非常感謝 – user1597122 2013-03-10 09:20:05