ある時点での"disabled"
(灰色で囲まれたdisabled="disabled"
属性)入力を表示する必要があります。標準(xhtmlおよびhtml4)で指定されているように、タイプの入力には"readonly"
属性を含めることはできません。これはプレゼンテーションの目的のみであり、実際の値はPOSTで終わる必要があることに注意してください。Djangoフォーム:無効なフィールドをバリデーションの間に残す
initial_val = 'to be'
form = SomeForm(ititial={'field':initial_val,
'mock_field':initial_val})
をそして、すべてが順調です。そして、それは次のように初期化され
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'}))
を:だから、ここで私は何をすべきか(ジャンゴのフォーム宣言の一部を引用)されます。フォームが検証され、他のフィールドの1つが検証に失敗するまで。これが起きると、フォームは再ロードされ、値は保存されますが、 "mock_field"の値は保持されません。送信されない(無効になります)。それは保存されていません。これはデータの整合性には影響しませんが、プレゼンテーションにはそれほど適していません。
可能な限り小さなハッカーで、そのフィールドを保存する方法はありますか?フォームはdjango.contrib.formtools.FormWizard
の一部であり、初期値(およびいくつかのフィールド)は動的に生成されます。基本的には、すでに多くのことが進んでいますが、事を過度に複雑化しないようにすることができれば素晴らしいことでしょう。
私は、無効なフィールドが投稿されていないことを知っています(成功したコントロールのみが表示され、無効なフィールドは決して成功しないため)。今あなたのアプローチをテストしようと思います。それはかなり説得力があります。 – shylent