之間仍然存在在某些時候我需要顯示類型的"disabled"
(由disabled="disabled"
屬性灰色)輸入。如標準(xhtml和html4)中所述,類型的輸入不能具有"readonly"
屬性。請注意,這僅用於演示目的,實際值必須在POST中結束。因此,這裏是我做(報價在Django的形式聲明的一部分):Django表單:使禁用字段驗證
from django import forms
_choices = ['to be', 'not to be']
class SomeForm(forms.Form):
field = forms.ChoiceField(choices=[(item, item) for item in _choices],
widget=forms.HiddenInput()) # the real field
mock_field = forms.ChoiceField(required=False, # doesn't get submitted
choices=[(item, item) for item in _choices],
label="The question",
widget=forms.Select(attrs={'disabled':'disabled'}))
它被初始化這樣的:
initial_val = 'to be'
form = SomeForm(ititial={'field':initial_val,
'mock_field':initial_val})
,一切都很好。那麼,直到表單得到驗證,並且其他字段之一未通過驗證。發生這種情況時,表單將被重新加載並保存值,但不是「mock_field」 - 它從未提交過(它被禁用)。所以它不被保存。雖然這不影響數據的完整性,但它仍然不是很好的演示方式。
有沒有什麼方法可以保留這個領域,儘可能少用駭客?該表格是django.contrib.formtools.FormWizard
的一部分,並且初始值(和一些字段)是動態生成的。基本上,已經有很多事情在發生,如果有可能不會讓事情過度複雜化,那將會很棒。
嗯,我當然知道禁用的字段不會發布(因爲只有成功的控件纔會發佈,禁用的字段永遠不會成功)。我現在要測試你的方法。它看起來相當有說服力。 – shylent 2009-10-21 07:36:37