最初に表示する前に検証したいフォームがあります。基本的に、私が目指している動作は、ユーザーがフォームを開いたときに、初期値(オブジェクトインスタンスから取得)がすでにチェックされており、無効な場合は、エラーが添付されたものとしてマークされます。
アイデアは2つの形式を持つことです:
def DraftForm(forms.ModelForm):
class Meta:
model = Project
def FinalForm(DraftForm):
def __init__(self, *args, **kwargs):
super(FinalForm, self).__init__(*args, **kwargs)
self.fields['text'].required = True
1つ目は下書きを編集するときに使用され、2つ目は公開に必要なすべてのフィールドが入力されているかどうかを確認するために使用されます。
「プロジェクトの編集」ビューでこのようなものが機能し、最初のフォームがエラーで表示されると思いました。
# redirected from some other form, so no POST at this point:
if request.session.get('trying_to_publish', False):
form = FinalForm(instance=project)
form.is_valid()
else:
form = DraftForm(instance=project)
...
しかし、違います。full_clean()もエラーをトリガーしません。何か案は?