0

私はこのようなフォームを持っています:

class TitlePropose(forms.Form):
    title = forms.CharField(max_length=128)
    code= forms.CharField(max_length=32)
    def __init__(self, contest, *args, **kwargs):
        super(TitlePropose, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_id = self.__class__.__name__.lower()
        self.helper.form_action = ''
        self.helper.layout = Layout(,
            Field('title'),
            Field('code'),
        )


    def clean_title(self):
        if OtherModel.objects.filter(contest=contest, title=self.cleaned_data['title']).count() > 0:
            raise forms.ValidationError("Title unavailable")
        else:
            return self.cleaned_data['title']

clean_title メソッドから変数 "contest" にアクセスしようとしましたが、成功しませんでした。この変数をフォーム クラス コンストラクターに渡します。

#contest is just some object
new_title_form = TitlePropose(contest=contest.uuid)

clean_title で「コンテスト」にアクセスするにはどうすればよいですか?

4

1 に答える 1

3

これは標準の Python クラスのものです。他のメソッドがアクセスできるようにオブジェクトを格納する場合は、オブジェクトを に追加してインスタンス アトリビュートにしますself

def __init__(self, *args, **kwargs):
    self.contest = kwargs.pop('contest')
    super(TitlePropose, self).__init__(*args, **kwargs)

def clean_title(self):
    if OtherModel.objects.filter(contest=self.contest, ...
于 2014-06-16T20:21:13.913 に答える