1

InternForm一般的なメッセージやウィジェットなどを継承しModelFormて定義 する「ジェネリック」があります。

誰もがアクセスできるアプリケーションフォームと呼ばれるサブクラスを定義しましたApplyInternForm。「高度な」フィールドの一部を非表示にします。

excludeフォームのサブクラスの設定を上書きするにはどうすればよいですか?

class InternForm(ModelForm):

    # ...

    class Meta:
        model = Intern
        exclude = ()

class ApplyInternForm(InternForm):
    def __init__(self, *args, **kwargs):
        super(ApplyInternForm, self).__init__(*args, **kwargs)
        self.Meta.exclude = ('is_active',)  # this doesn't work
4

3 に答える 3

3

Metaサブクラスでクラスを定義することは私のために働きました:

class InternForm(ModelForm):

    # ...

    class Meta:
        model = Intern

class ApplyInternForm(InternForm):

    class Meta:
        model = Intern
        exclude = ('is_active',)
于 2011-09-27T12:00:30.797 に答える
1

この方法ではありません。フォームをサブクラス化すると、除外するフィールドはすでに存在します。self.fieldsただし、を呼び出した後、それらを削除することはできsuper()ます__init__()

于 2011-09-27T11:55:37.207 に答える
-1

ウィジェットを非表示に変更できます。

class ApplyInternForm(InternForm):
    class Meta:
        widgets = {
            'is_active': forms.HiddenInput(required=False),
        }
于 2011-09-27T13:56:14.373 に答える