基本上我有一個具有ManyToMany字段的模型,然後從該模型派生出一個模型,其中該字段呈現爲「多選」選擇框。在我的模板中,我省略了該字段,而是選擇在視圖中爲該字段準備值,然後將這些準備的值傳遞到request.POST(實際上是request.POST的副本,因爲request.POST是不可變的),然後向表單提供請求.POST,然後正常進行。我無法弄清楚如何做到這一點,因爲request.POST不僅僅是一個簡單的python字典,而是一個QueryDict,它的行爲有點不同。如何構建一個自定義的「列表類型」條目來請求。POST
我需要填寫的字段叫做"not_bases"
。當我使用表單創建窗口小部件時,它在內部完美地工作,但不是以我喜歡的UI方式。當我檢查通過Django的方便調試錯誤窗口提交POST值Django的形式,工作的QueryDict看起來是這樣的:
<QueryDict: {u'not_bases': [u'005', u'00AR', u'00F', u'00FD'], [...] }>
它出現"not_bases"
值是一個列表,但它不是一個簡單的列表。我不能只是.append(),因爲它不起作用。我在文檔中搜索並找到.update(),其中出現工作,但沒有。這裏是我的代碼:
newPOST = request.POST.copy()
for base in bases:
newPOST.update({"not_bases": base.identifier})
這裏是輸出:
<QueryDict: {u'not_bases': [u'KMER', u'KYIP'], u'reference': [u''], [...] }>
但是,當我哺養的QueryDict的形式,我得到的,說:「not_bases的形式驗證錯誤:輸入列表值。「很顯然,QueryDict的str()表示形式的列表看起來不同於上述兩種情況,儘管它們看起來完全一樣
那麼,我該如何做到這一點?
如果我對源代碼的理解是正確的,那麼應該可以將.append()添加到not_bases -list。你能否澄清一下你的意思是「它行不通」? – 2009-06-22 07:44:40
黑客請求.POST是實現目標的錯誤方法。相反,請修改表單,使其不需要該字段,而是在保存的模型中手動設置值(或者表單對POST數據執行的任何操作)。 – 2009-06-22 15:39:10